将列表元素作为参数传递给mixin

Gee*_*ang 3 sass

以下代码工作,除了我尝试传递$gradient@include background-image.

@mixin compositeFill($size: 100px, $gradient:(top, #000000 0%, #FFFFFF 100%)) {

    $isTop: nth($gradient, 1) == "top";
    $direction: if($isTop, vertical, horizontal);
    $widthHeight: if($isTop, height, width);
    $heightWidth: if($isTop, width, height);

    // snipped a whole bunch of irrelevant stuff
    // this is what fails:
    @include background-image(linear-gradient($gradient));
}
Run Code Online (Sandbox Code Playgroud)

如何将列表(例如$gradient)传递给需要多个参数的mixin?

Mar*_*jak 6

要将参数列表传递给接受多个参数的mixin,您可能希望像下面这样使用它:

@include background-image(linear-gradient($gradient...));
Run Code Online (Sandbox Code Playgroud)

三个点表示你想要从列表元素中填充参数...否则整个列表作为单个参数传递...并且linear-gradient()mixin失败(因为它预期至少有两个颜色停止参数).

DEMO