Директива @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;
  }
}