控制指令
控制指令主要有:@if 、@for 、@while 、@each 四种,控制指令是一种高级功能, 主要与混合指令(mixin)配合使用 。尤其是在 Compass 库中 。
1 、@if
@if 跟 if 条件语句一样,也可以跟多个 @else if ,用返回值来判断输出的代码,当返回值为 true 时候输出后面 { } 中的代码,当返回值是 false 时,表示该条件不成立,将逐条执行 @else if 声明,如果全部不成立,最后执行 @else 声明 。
如下代码:
$name : cmy p{ @if $name == c { color : red ; } @else if $name == m { color : blue ; } @else if $name == y { color : green ; } @else if $name == cmy { color : gold ; }@else { color : yellow ; } }
编译为:
p {
color : gold ;
}
2 、@for
在 Sass 的 @for 循环中有两种方式:
@for $cmy from <start> through <end>
@for $cmy from <start> to <end>
- $cmy 表示变量
- start 表示起始值
- 关键字 through 表示包括 end 这个数
- to 表示不包括 end
eg1:trough关键字 ,如下代码:
@for $i from 1 through 3 { .item-#{$i} { 2em * $i; } } 编译为: .item-1 { 2em; } .item-2 { 4em; } .item-3 { 6em; }
eg2:to关键字 ,如下代码:
@for $i from 1 to 3 { .item-#{$i} { 2em * $i; } } 编译为: .item-1 { 2em; } .item-2 { 4em; }
3 、@while 循环
@while 指令重复输出格式直到表达式返回结果为 false 。这个和 @for 指令很相似,只要 @while 后面的结果为 true 就会执行。
$i:4; //变量赋值用 : 而不是想js一样用 = $i_100px; @while $i>0{ .item-#{$i}{ $i_width+$i} $i:$i-1; } 编译为: .item-1{ 104px;
}
.item-2{
103px;
}
.item-3{
102px;
}
.item-4{
101px;
}
4 、@each
@each 指令就是便利一个值列表,然后将变量作用于值列表中每一个项目,输出结果 。
格式:$var in <list>
$var 变量名
<list> 一连串的值,也就是值列表
eg:
@each $animal in puma, sea-slug, egret, salamander {
.#{$animal}-icon {
background-image: url('/images/#{$animal}.png');
}
}
编译后:
.puma-icon {
background-image: url('/images/puma.png');
}
.sea-slug-icon {
background-image: url('/images/sea-slug.png');
}
.egret-icon {
background-image: url('/images/egret.png');
}
.salamander-icon {
background-image: url('/images/salamander.png');
}