Как работает цикл @each в Sass

Если в вашем коде Sass есть Map (ассоциативный массив) или список, вам необязательно обращаться к каждому ключу по отдельности – вы можете перебрать их с помощью цикла @each. Этот цикл выполняет итерацию значений списка или мапа и для каждого из них выполняет соответствующий блок кода. С его помощью из списка или мапа вы можете легко сгенерировать класс.

Читайте также:

Цикл @each имеет следующий синтаксис:

@each $var in <список>

Здесь $var – это переменная, которая будет использоваться внутри цикла для хранения текущего значения из списка или ассоциативного массива. Например:

$shapes: triangle, square, circle;

@each $shape in $shapes {
  .icon-#{$shape} {
    background-image: url('/images/#{$shape}.jpg');
  }
}

$map: (
  h1: 20px,
  h2: 16px,
  h3: 14px
);

@each $element, $size in $map {
  #{$element} {
    font-size: $size;
  }
}

Здесь после директивы идет $shape – это и есть переменная. Цикл @each последовательно присвоит переменной $shape каждое значение элемента из списка $shapes, а затем выведет эти значения на экран.

Если переменная объединяется со строкой или используется как класс или элемент, то перед этой переменной нужно поставить символы #{ и }, — чтобы сообщить компилятору, что вы на самом деле имеете в виду переменную.

Также циклы можно вкладывать в другие циклы, если ваш мап многоуровневый.

Кроме того, цикл @each может одновременно работать с несколькими переменными. В этом случае их нужно разделить запятыми. Синтаксис выглядит так:

@each $var1, $var2, ... in <список>

Если указанный в цикле список содержит вложенные списки, то цикл присвоит соответствующей переменной значение каждого вложенного списка.

Tags:

Добавить комментарий