提到控制指令大家可能有点陌生。但是提到“if”、“each”、“for”和“while”,大家也许不太陌生了。很多语言中都经常和这些打交道,而SASS详解之控制指令就是为大家介绍在SASS中怎么使用“if”、“each”、“for”和“while”。
If是用来判断用的,那么在SASS中的if应该怎么写呢?如下
SASS代码
p {
@if 1 + 1 == 2 {
width:30px;
}@else {
width:100px;
}
}
编译后的CSS代码
p {
width: 30px;
}
有if,那么就还得有else,就还得有“==”等一系列判断的符号,如下
SASS代码
p {
$a:true !default;
$b:false !default;
@if not($a) {
border:1px solid red;
}@else {
border:1px solid green;
}
div{
@if $a or $b {
width:300px;
}
}
li{
height:20px;
@if $a and $b {
float:left;
}
}
}
$width: 5px !default;
.meng {
height:20px;
@if $width != 0 {
border:1px solid red;
}
}
$sizeClass: small !default;
.long {
@if $sizeClass == 'small' {
padding:5px;
} @else {
padding:10px;
}
}
编译后的CSS代码
p {
border: 1px solid green;
}
p div {
width: 300px;
}
p li {
height: 20px;
}
.meng {
height: 20px;
border: 1px solid red;
}
.long {
padding: 5px;
}
这个就是循环的意思,详细的大家还是看例子来的更直观,如下
SASS代码
@each $meng in meng1, meng2, meng3, meng4 {
.#{$meng}-long {
background-image: url('/images/#{$meng}.png');
}
}
编译后的CSS代码
.meng1-long {
background-image: url("/images/meng1.png");
}
.meng2-long {
background-image: url("/images/meng2.png");
}
.meng3-long {
background-image: url("/images/meng3.png");
}
.meng4-long {
background-image: url("/images/meng4.png");
}
SASS代码
$sprite: long1 long2 long3 long4 long5 !default;
%spriteAll{
background: url('menglong.png') no-repeat;
}
@each $one in $sprite {
.#{$one}-two {
@extend %spriteAll;
background-position:0 index($sprite,$one)*(-30px);
}
}
编译后的CSS代码
.long1-two, .long2-two, .long3-two, .long4-two, .long5-two {
background: url("menglong.png") no-repeat;
}
.long1-two {
background-position: 0 -30px;
}
.long2-two {
background-position: 0 -60px;
}
.long3-two {
background-position: 0 -90px;
}
.long4-two {
background-position: 0 -120px;
}
.long5-two {
background-position: 0 -150px;
}
for循环有两种形式,分别为:@for $var from through 和@for $var from to 。$i表示变量,start表示起始值,end表示结束值,这两个的区别是关键字through表示包括end这个数,而to则不包括end这个数。
SASS代码
@for $i from 1 through 5 {
.meng#{$i} {
width : 2px * $i;
}
}
编译后的CSS代码
.meng1 {
width: 2px;
}
.meng2 {
width: 4px;
}
.meng3 {
width: 6px;
}
.meng4 {
width: 8px;
}
.meng5 {
width: 10px;
}
SASS代码
@for $i from 1 to 5 {
.meng#{$i} {
height : 2px * $i;
}
}
编译后的CSS代码
.meng1 {
height: 2px;
}
.meng2 {
height: 4px;
}
.meng3 {
height: 6px;
}
.meng4 {
height: 8px;
}
While是指多次输出,直到该语句的嵌套样式的计算结果为false,相比前几个,while循环更加难以理解一些。
SASS代码
$i: 6;
$end : -2;
@while $i > $end {
.item-#{$i} { width: 2px * $i; }
$i: $i - 2;
}
编译后的CSS代码
.item-6 {
width: 12px;
}
.item-4 {
width: 8px;
}
.item-2 {
width: 4px;
}
.item-0 {
width: 0px;
}
SASS详解之控制指令就为大家介绍到这里了,SASS详解之控制指令是SASS中比较高级的部分,可能得需要一切其他语言的基础才能够理解,更需要对之前SASS基本规则有一定了解的小伙伴儿才能够理解。不过小伙伴儿们能看到这里,已经很厉害了。