SASSの@forディレクティブ

@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; 
}

2番目の構文は次のようになります:

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

ここでは、(end)の値は除外されます。

前の例を2番目の構文で書いてみましょう:

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;
  }
}