在Sass中,我们可以通过使用插值的方式来实现在[选择器名]、[属性名]以及[属性值]中插入一个[变量的值],从而来[构造]一个新的选择器名、新的属性名以及新的属性值。
语法:
#{变量}
说明:
插值这种方式,在Sass代码的几乎任何一个地方都可以插入一个值,包括选择器名、属性名、属性值等。我们还是来个例子比较直观一点。
举例1:插值用于[选择器名]
@for $i from 1 through 3 { .item-#{$i} { width:10px * $i; } }
编译出来的CSS代码如下:
.item-1 { width: 10px; } .item-2 { width: 20px; } .item-3 { width: 30px; }
分析:
[@for $i from 1 through 3]很好理解,这表示一个从1到3的循环,在后面[Sass @for循环]这一节我们会详细介绍。
细心的小伙伴们可能就有疑问了,我直接用下面这种插入变量的方式,不也能实现吗?
@for $i from 1 through 3 { .item-$i { width:10px * $i; } }
不好意思,还真不能!变量,我们一般都是用于属性值的,是不能直接用于选择器名中的,不然Sass会无法编译成CSS。
举例:插值用于[属性名]
$border:border; div { #{$border}-width:1px; #{$border}-style:solid; #{$border}-color:red; }
编译出来的CSS代码如下:
div { border-width: 1px; border-style: solid; border-color: red; }
分析:
由于变量只能用于属性值,是不能直接用于属性名的,也就是说如果我们使用下面这种方式是达不到预期效果的:
$border:border; div { $border-width:1px; $border-style:solid; $border-color:red; }
举例:插值用于[属性值]
@for $i from 1 through 3 { .item-#{$i} { border:#{$i}px solid red; } }
编译出来的CSS代码如下:
.item-1 { border: 1px solid red; } .item-2 { border: 2px solid red; } .item-3 { border: 3px solid red; }
分析:
在这个例子中,如果我们用以下方式,也是达不到我们预期效果的:
@for $i from 1 through 3 { .item-#{$i} { border:$ipx solid red; } }
这是因为border属性的属性值是一个列表值,而不是单纯的一个数字或字符串。也就是说,如果属性值是一个简单数字或者字符串,我们可以使用变量的方式来实现。但如果属性值是一个复杂的数据类型,我们就必须使用插值的方式来实现。
总而言之,如果你想要在Sass中构造一个新的选择器名、新的属性名以及新的属性值,首先考虑的应该是使用[插值#{}]来实现。
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://haodehen.cn/did225710