CSS函数在mixin - 灰度级

时间:2013-10-24 09:27:13

标签: css sass grayscale

我正在尝试创建一个用于灰度化html元素的mixin。

以CSS方式,它应该是:

filter: grayscale(50%);

我的混音:

@mixin grayscale_element($value) {
    -webkit-filter: grayscale($value);
    -moz-filter: grayscale($value);
    filter: grayscale($value);
}

我的错误:

Fatal error: Uncaught exception 'SassScriptFunctionException' with message 'SassNumber must be a SassColour
Source: -webkit-filter: grayscale($value)'

问题是,在sass灰度中已经是一个函数,而参数应该是一种颜色。

Module: Sass::Script::Functions - Sass Documentation

如何在mixin中使用这些过滤器?

注意:我正在使用phpsass。

2 个答案:

答案 0 :(得分:13)

如果您只是想避免将grayscale函数评估为Sass函数,请使用字符串插值。像这样:

filter: #{"grayscale(#{$value})"};

如果$value设置为50%,CSS输出将为:

filter: grayscale(50%);

Demo

答案 1 :(得分:0)

只要我将mixin包括在内,代码就能正常工作:

@include grayscale_element(100%);

当一个字符串传递给mixin时,它就像你提到的那样失败了。

$val: 100%;
@include grayscale_element(#{$val});

应估计类型。