Sass中具有可变参数列表的一个属性的多个值

Sass中具有可变参数列表的一个属性的多个值,sass,Sass,我希望有一个混音像+stacktextshadow(蓝色,红色,绿色)吐出文本阴影:1px 1px 0蓝色,2px 2px 0红色,3px 3px 0绿色 目前我拥有的是: =stacktextshadow($shadows...) @for $i from 1 through length($shadows) $shadow1: append(1px 1px 0, nth($shadows,1)) $shadow2: append(2px 2px 0, nth($shado

我希望有一个混音像
+stacktextshadow(蓝色,红色,绿色)
吐出
文本阴影:1px 1px 0蓝色,2px 2px 0红色,3px 3px 0绿色

目前我拥有的是:

=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; }
三倍。我知道为什么,因为它在
@for
循环中运行了三次
text shadow
属性声明。我希望它只做一次。但是,当我将
文本阴影
从foor循环中取出时,它无法访问
$shadow1
$shadow2
,等等


另外,我不想重复我自己的话:
$shadow($I):append($I*1px$I*1px 0,nth($shadows,$I))
(这显然不起作用),所以无论我是将一个参数传递到mixin还是20,都是动态完成的。

您可以在循环外创建一个变量来“收集”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; }

您可以在循环外部创建一个变量来“收集”阴影值,然后在
文本阴影
属性中使用该变量。例如:

=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; }