无法将函数作为参数传递给mixin

时间:2014-02-10 10:53:40

标签: sass mixins

我正在尝试在Sass中创建一个mixin用于:悬停操作,但我无法使其工作。

我声明了mixin:

@mixin hover($action, $color, $amount) {
    color: $action($color, $amount);
}

我的想法是使用Sass Script Funcions通过基本上使其变亮或变暗来改变悬停时链接的颜色。例如,我尝试:

a {
    &:hover {
        @include hover(darken, $footer-text-color, 5%);
    }
}

$footer-text-color是我之前定义的变量,它等于十六进制颜色,例如#84b3c8。

我希望这与

相同
 a {
    &:hover {
        color: darken($footer-text-color, 5%);
    }
}

相反,它在纯CSS中编译的是:

color: darken #84b3c8, 5%;

很明显,颜色功能不起作用,但真诚地我不明白为什么。我确定这是傻事,也许是mixin参数中变量和字符串值之间的混合?

1 个答案:

答案 0 :(得分:5)

函数和mixins在Sass中不是第一类,这意味着它们不能作为参数传递给其他函数或mixin。

在Sass 3.3中,有一个名为call()的新功能,可以为您提供所需的行为:

@mixin hover($action, $color, $amount) {
    color: call($action, $color, $amount);
}