Директива @for в SASS

С помощью директивы @for можно вывести определенные стили в количестве, указанном переменной-счетчиком. Первый вариант записи @for выглядит так:

scss@for $var from (begin) through (end)

В этом случае в диапазон строго включаются значения (begin) и (end). Стоит обратить внимание на то, что (begin) и (end) - должны возвращать целые числа, поскольку они задают направление счёта, т.е. если (begin) меньше, чем (end), счётчик будет расти и соответственно, если наоборот - убывать.

Рассмотрим работу директивы @for в первом варианте синтаксиса на следующем примере:

styles.scss@for $count from 1 through 5 {
  .li-#{$count} {
    width: $count + px;
  }
}

Результат компиляции:

styles.css.li-1 {
  width: 1px; 
}
.li-2 {
  width: 2px; 
}
.li-3 {
  width: 3px; 
}
.li-4 {
  width: 4px; 
}
.li-5 {
  width: 5px; 
}

Во втором варианте запись выглядит следующим образом:

scss@for $var from (begin) to (end)

Причем здесь значение (end) отбрасывается.

Возьмем предыдущий пример и запишем его во втором варианте:

styles.scss@for $count from 1 to 5 {
  .li-#{$count} {
    width: $count + px;
  }
}

Теперь обратите внимание на получившийся код:

styles.css.li-1 {
  width: 1px; 
}

.li-2 {
  width: 2px; 
}

.li-3 {
  width: 3px; 
}

.li-4 {
  width: 4px; 
}
Задание 1

Расскажите, каким будет результат компиляции следующего кода:

styles.scss@for $var from 5 through 1 {
  li-#{$var} {
    padding: 10 * $var + px;
  }
}
Задание 2

Расскажите, каким будет результат компиляции следующего кода:

styles.scss@for $var from 1 to 3 {
  .navbar-link-#{$var} {
    color: blue;
    width: 10px * $var;
  }
}