我希望像+stacktextshadow(blue, red, green)
吐出text-shadow: 1px 1px 0 blue, 2px 2px 0 red, 3px 3px 0 green;
目前这就是我所拥有的:
=stacktextshadow($shadows...)
@for $i from 1 through length($shadows)
$shadow1: append(1px 1px 0, nth($shadows,1))
$shadow2: append(2px 2px 0, nth($shadows,2))
$shadow3: append(3px 3px 0, nth($shadows,3))
text-shadow: $shadow1, $shadow2, $shadow3
h1
+stacktextshadow(blue, red, green)
这给了我:
h1 {
text-shadow: 1px 1px 0 blue, 2px 2px 0 red, 3px 3px 0 green;
text-shadow: 1px 1px 0 blue, 2px 2px 0 red, 3px 3px 0 green;
text-shadow: 1px 1px 0 blue, 2px 2px 0 red, 3px 3px 0 green; }
三倍。我知道为什么,因为它在text-shadow
循环中运行了@for
属性声明三次。我希望它只做一次。但是,当我将text-shadow
移出foor循环时,它无法访问$shadow1
,$shadow2
等。
另外,我不想用以下内容重复自己:$shadow($i): append($i*1px $i*1px 0, nth($shadows,$i))
(显然不起作用)所以它都是动态完成的 - 我是否将一个参数传递给mixin,或者20。
答案 0 :(得分:6)
您可以在循环外创建一个变量来“收集”阴影值,然后在text-shadow
属性中使用该变量。例如:
=stacktextshadow($shadows...)
$all: ()
@for $i from 1 through length($shadows)
$all: append($all, append($i*1px $i*1px 0, nth($shadows, $i)), comma)
text-shadow: $all
h1
+stacktextshadow(blue, red, green)
输出:
h1 {
text-shadow: 1px 1px 0 blue, 2px 2px 0 red, 3px 3px 0 green; }