【发布时间】:2016-01-26 21:27:21
【问题描述】:
我有一个用于 box-shadow 的 sass mixin,如下所示:
@mixin box-shadow($hLength, $vLength, $blur, $spread, $colour, $type:""){
@if $type != "" {
-webkit-box-shadow:$type $hLength $vLength $blur $spread $colour;
-moz-box-shadow:$type $hLength $vLength $blur $spread $colour;
box-shadow:$type $hLength $vLength $blur $spread $colour;
}
}
这对我的大部分应用程序都很好。
但是我现在需要以某种方式修改我的方法。
我有可以有 11 个类之一的列表项,这个类控制列表项的颜色和图标。
我的变量示例:
$channel1: #19BC9C;
$channel2: #F1C40E;
$channel3: #9B59B6;
$channel4: #3398DB;
我对列表项的 sass 如下所示:
li {
&.channel1 {
@include box-shadow(-3px, 0px, 0px, 0px, $channel1, inset);
}
&.channel2 {
@include box-shadow(-3px, 0px, 0px, 0px, $channel2, inset);
}
}
问题是每个类元素的 px 值和 inset 都是相同的。但是 box-shadow-color 没有属性,所以我不能拆分参数。
我希望我可以将 -3px、0px、0px、0px 存储在一个单独的变量中并将其传入。
@include box-shadow($channelBorder, $channel1, inset); 等,但这不起作用。
有谁知道是否有一个像样的解决方案,我宁愿尽可能保持我的 mixin 不变。
【问题讨论】:
-
我必须为 11 个类中的每一个写出相同的属性,我想将这些属性存储在一个变量中并将它们传递给 mixin,所以 $channelBorder 将是一个常量,但我可以给通道添加不同的颜色,这样信息会改变吗?有道理?如果有帮助,我可以更新问题。