嗨我有很多颜色的变量。所以想做这样的事情:
$culture: #00CC66;
$party:#CC9900;
@each $i in culture, party {
.bl_#{$i}{
border-left-color: #{$#{$i}};
}
}
用于打印:
bl_culture{border-left-color:#00cc66}
bl_party{border-left-color:#cc9900}
怎么能这样呢?
感谢
答案 0 :(得分:21)
SASS 3.3 UPDATE
使用sass 3.3中的一些新功能,您可以选择变量名称并消除恼人的nth()
@each $name, $color in(
'red' $red,
'green' $green,
) {
.color-#{$name} {
background-color: $color;
}
}
<强> ORIGINAL 强>
这有点痛苦,但你可以通过列表然后循环来实现
例如:
$colorList:
"red" $red,
"green" $green
;
@each $i in $colorList{
.color-#{nth($i,1)}{
background-color:nth($i,2);
}
}
在其他地方预先定义了这些颜色变量:
.color-red{
background-color:#FF0000
}
.color-green{
background-color:#00FF00
}
答案 1 :(得分:5)
尽管很难过,但你不能。 SASS只会解析你的文件一次,所以即使你做了这样的事情:
$culture: #00CC66;
$party:#CC9900;
@each $i in culture, party {
.bl_#{$i}{
border-left-color: #{'$' + $i};
}
}
您最终会得到以下CSS:
.bl_culture {
border-left-color: $culture; }
.bl_party {
border-left-color: $party; }
您最好的选择可能是改变您的代码:
.bl {
[...]
&.culture {
border-left-color: #00CC66
}
&.party {
border-left-color: #CC9900
}
}
然后使用类似class="bl culture"
而不是class="bl_culture"
的内容。