@if
與其他程式語言一樣,Sass 的條件判斷也分為 @if、@else if、@else。
$type: monster; p { @if $type == ocean { color: blue; } @else if $type == matador { color: red; } @else if $type == monster { color: green; } @else { color: black; } }
p { color: green; }
|
@for
Sass 提供的 for 迴圈重複運算,其概念與一般程式中的 for 迴圈概念相同,需給定迴圈的「起始值」與「終止值」,它有兩種格式,且判斷條件不需用括號包起來。
@for $i from 1 through 3 { .item-#{$i} { width: 2em * $i; } }
.item-1 { width: 2em; }
.item-2 { width: 4em; }
.item-3 { width: 6em; }
|
@while
@while 迴圈,很少會用到。
$i: 6; @while $i>0 { .item-#{$i} { width: 2em * $i; } $i: $i - 2; }
.item-6 { width: 12em; }
.item-4 { width: 8em; }
.item-2 { width: 4em; }
|
@each
Sass 提供的 each 迴圈 針對陣列(List)或物件(Map)等資料結構中的每一項元素進行迭代運算,它以符號 @each 進行迴圈運算。
@each 用在 list 和 map 的提取,$var 可以任何自取的變數名稱,動態帶入 list 或 map 中的每個項目。
@each $var in {…}
$list: orange, purple, teal;
@each $item in $list { .#{$item} { background: $item; } }
.orange { background: orange; }
.purple { background: purple; }
.teal { background: teal; }
|
@each 會依序從陣列中逐一取出值並對應前面的變數。
@each $name, $color, $bgcolor in (box1, red, black), (box2, green, black), (box3, blue, black) { .#{$name} { width: 100px; height: 100px; color: $color; background-color: $bgcolor; } }
.box1 { width: 100px; height: 100px; color: red; background-color: black; }
.box2 { width: 100px; height: 100px; color: green; background-color: black; }
.box3 { width: 100px; height: 100px; color: blue; background-color: black; }
|
注意 Map 最後要有分號。
$themes: ( 'primary': blue, 'danger': red ); @each $key, $value in $themes { .btn-#{$key} { background: $value; } }
.btn-primary { background: blue; }
.btn-danger { background: red; }
|
$share-map: ( 'facebook': ( 'pic': 'facebook.png', 'color': #3c5998 ), 'google': ( 'pic': 'google.png', 'color': #cb3726 ), 'email': ( 'pic': 'email.png', 'color': #666666 ) );
@each $key, $value in $share-map { $pic: map-get($value, 'pic'); $color: map-get($value, 'color');
.#{$key} { background-image: $pic; background-color: $color; } }
|