Итерация потомков (nth-child) с использованием SASS
Допустим, у нас есть несколько nth-child
элементов, к которым мы хотим применить различную задержку для transition. Можно вручную задать transition delay для каждого элемента, но если у нас 20 элементов, то это будет не удобно, поэтому применим гораздо более эффективный способ. Используя возможности цикла Sass @for
, мы можем динамически выбрать каждый элемент и применять различные свойства. Ниже мы рассмотрим соответствующий код и посмотрим на результат.
HTML
<ul> <li>Dashboard</li> <li>Favorites</li> <li>Profile</li> <li>Settings</li> </ul>
Простой неупорядоченный список, мы собираемся ориентироваться на элементы <li>
.
Mixin
@mixin transition { @for $i from 1 through 4 { &:nth-child(#{$i}) { transition: all .2s #{$i * .1}s ease-in; } }
Это самая веселая часть! По сути, происходит то, что мы выполняем цикл от 1 до 4 и каждый раз передаем переменную $i
в селектор nth-child()
. Для каждой итерации цикла мы также присваиваем задержку перехода $i * .1
, что дает нам разные значения для каждого дочернего элемента.
SCSS
li { @include transition; }
Здесь мы просто включаем наш миксин в селектор li.
На выходе получим такой CSS:
li:nth-child(1) { transition: all 0.2s 0.1s ease-in; } li:nth-child(2) { transition: all 0.2s 0.2s ease-in; } li:nth-child(3) { transition: all 0.2s 0.3s ease-in; } li:nth-child(4) { transition: all 0.2s 0.4s ease-in; }
Посмотрев на этот вывод, вы получите достаточно четкое представление о том, что на самом деле произошло, когда мы включили миксин.
Работающий пример:
See the Pen Off Canvas Menu by Denis (@deniscreative) on CodePen.0
Очень популярная функция на различных одностраничниках — плавный скролл к нужному элементу на этой же…
Использование @keyframes с препроцессором SASS. Базовый пример использования @keyframes в SASS: Создаем миксин, чтобы добавить…
CSS счетчики, в своей сущности, переменные CSS, значения которых могут быть инкрементированы при помощи CSS…
В одной из статей я приводил пример, валидации формы с помощью CSS, но с ограниченными…