【发布时间】:2015-02-06 04:25:04
【问题描述】:
我正在制作带有一些色块的风格指南。 HTML 如下所示:
<div class="colorBlock _fafafa">Light Gray (#fafafa)</div>
<div class="colorBlock _eaeaea">Gray (#eaeaea)</div>
<div class="colorBlock _777">Meta-Gray (#777)</div>
<div class="colorBlock _555">Gray 5 (#555)</div>
<div class="colorBlock _444">Gray 4 (#444)</div>
<div class="colorBlock _333">Gray 3 (#333)</div>
我想写一些 DRY-principle SASS 编译成这个 CSS:
.colorBlock._fafafa {
background-color: #fafafa;
}
.colorBlock._eaeaea {
background-color: #eaeaea;
}
...
所以我正在尝试列表和@each。这是我尝试过的:
$colors: fafafa eaeaea 777 555 444;
.colorBlock {
@each $color in $colors {
&._#{$color} {
background-color: ##{$color};
}
}
}
这可行,但 Sass 不喜欢 ##{$color} 并在编译时失败。我尝试了\##{$color},它成功编译,但打印出\#fafafa。我也试过#$color,但是编译也失败了(Invalid CSS after "...kground-color: ": expected expression (e.g. 1px, bold), was "#$color; ")。我还尝试了#{# + $color} 和其他类似的组合。这样做的正确方法是什么?
【问题讨论】:
-
为什么投反对票?这是两个截然不同的问题。因为我的颜色是没有
#前缀的十六进制值,所以这是一个独特的问题。如果我有red、green等语义颜色,我不会有问题,但问题是##冲突会导致各种编译错误。
标签: sass