在SASS中通过引用传递函数或mixin

时间:2013-01-12 16:57:55

标签: css sass

有没有办法通过引用SASS中的另一个函数或mixin传递函数或mixin,然后调用引用的函数或mixin?

例如:

@function foo($value) {
    @return $value;
}

@mixin bob($fn: null) {
    a {
        b: $fn(c); // is there a way to call a referenced function here?
    }
}

@include bob(foo); // is there any way I can pass the function "foo" here?

1 个答案:

答案 0 :(得分:4)

函数和mixins在Sass中不是一等,这意味着你不能像传递变量一样传递它们。

Sass 3.2及以上

最接近的是@content指令(Sass 3.2 +)。

@mixin foo {
    a {
        @content;
    }
}

@include bob {
    b: foo(c); // this replaces `@content` in the foo mixin
}

唯一需要注意的是@content无法看到你的混音中有什么。换句话说,如果c仅在bob mixin中定义,则它基本上不存在,因为它不在范围内。

Sass 3.3及更新

从3.3开始,您可以使用call()函数,但它仅用于函数,而不是mixins。这需要将包含函数名称的字符串作为第一个参数传递。

@function foo($value) {
    @return $value;
}

@mixin bob($fn: null) {
    a {
        b: call($fn, c);
    }
}

@include bob('foo');