SCSSでは、ループ処理を利用することで、スタイルの記述を簡潔にし、保守性を向上させることができます。
本記事では、SCSSの繰り返し処理で使われる@for
、@each
、@while
の違いと具体的な活用例を紹介します。
@for の使い方
@for
は、指定した範囲内で繰り返し処理を行う際に使用します。
基本構文
@for $i from 開始値 through 終了値 { // 繰り返し処理 }
through
は終了値を含みます。
一方、to
を使うと終了値を含みません。
使用例
余白調整用のスタイルを作成しています。
SCSS
Copy
@for $i from 1 through 5 {
.mt#{$i} {
margin-top: 10px * $i;
}
}
出力されるCSS
.mt1 { margin-top: 10px; } .mt2 { margin-top: 20px; } .mt3 { margin-top: 30px; } .mt4 { margin-top: 40px; } .mt5 { margin-top: 50px; }
@each の使い方
@each
はリストやマップの要素ごとに処理を適用する場合に使用します。
基本構文
@each $変数 in リスト { // 繰り返し処理 }
リスト(配列)の使用例
SCSS
Copy
$colors: "red", "green", "blue";
@each $color in $colors {
.text-#{$color} {
color: #{$color};
}
}
出力されるCSS
.text-red { color: red; } .text-green { color: green; } .text-blue { color: blue; }
マップ(連想配列)の使用例
SCSS
Copy
$theme-colors: (
primary: blue,
secondary: gray,
danger: red
);
@each $name, $color in $theme-colors {
.bg-#{$name} {
background-color: $color;
}
}
出力されるCSS
.bg-primary { background-color: blue; } .bg-secondary { background-color: gray; } .bg-danger { background-color: red; }
@while の使い方
@while
は条件が満たされている間、処理を繰り返します。
基本構文
$変数: 初期値; @while 条件 { // 繰り返し処理 $変数: 更新; }
使用例
SCSS
Copy
$i: 1;
@while $i <= 5 {
.line-#{$i} {
border-width: 1px * $i;
}
$i: $i + 1;
}
出力されるCSS
.line-1 { border-width: 1px; } .line-2 { border-width: 2px; } .line-3 { border-width: 3px; } .line-4 { border-width: 4px; } .line-5 { border-width: 5px; }
まとめ
SCSSのループ処理を活用すると、CSSの記述を効率化し、管理しやすくなります。
@for | 固定範囲の繰り返しに適用(例:ボックスサイズや余白の調整) |
---|---|
@each | リスト・マップの要素ごとに適用(例:色の適用) |
@while | 条件が満たされる限り繰り返し(例:変数を使った動的な設定) |
適切なループを使い分けて、SCSSをより効率的に活用しましょう!
リンク