跳过Sass mixin中的可选参数

跳过Sass mixin中的可选参数,sass,mixins,Sass,Mixins,我用这个混音来处理一个简单的CSS3线性梯度: @mixin线性渐变($from,$to,$dir:bottom,$dir-webkit:top,$ie过滤器:false){ 背景色:$to; 背景图像:-webkit线性渐变($dir webkit,$from,$to); 背景图像:线性渐变(到$dir,$from,$to); @如果$ie filters==true和$old ie{ 过滤器:progid:DXImageTransform.Microsoft.gradient(startCo

我用这个混音来处理一个简单的CSS3线性梯度:

@mixin线性渐变($from,$to,$dir:bottom,$dir-webkit:top,$ie过滤器:false){
背景色:$to;
背景图像:-webkit线性渐变($dir webkit,$from,$to);
背景图像:线性渐变(到$dir,$from,$to);
@如果$ie filters==true和$old ie{
过滤器:progid:DXImageTransform.Microsoft.gradient(startColorstr='{ie hex str($from)}',endColorstr='{ie hex str($to)}');
}
}
$dir
是“direction”的缩写

如果我需要将
$ie过滤器设置为“true”,并且我不需要更改
$dir
/
$dir webkit
默认值,我仍然需要重新声明它们,这显然不是非常干燥和优化的,因此我必须这样做:

@include linear-gradient(#7a7a7a, #1a1a1a, bottom, top, true);
@include linear-gradient(#7a7a7a, #1a1a1a, true);
当我只想这样做时:

@include linear-gradient(#7a7a7a, #1a1a1a, bottom, top, true);
@include linear-gradient(#7a7a7a, #1a1a1a, true);
调用mixin时,如何以这种方式跳过参数


PS如果您想知道
$dir webkit
参数,它是针对webkit的,因为它仍然不能处理新的渐变语法(请参阅:->新渐变语法),那么方向需要与标准语法相反。

从SASS 3.1开始,您可以传递命名参数来实现这一点:

@include linear-gradient($from: #7a7a7a, $to: #1a1a1a, $ie-filters: true);

其余的将是默认值。

您是否尝试过传递null?只是尝试过,但在使用
null
时它不会输出任何值:
@包括线性渐变(#f60,#c00,null,null,true)编译为:
背景图像:-webkit线性渐变(,#ff6600,#cc0000);背景图像:线性梯度(至,#ff6600,#cc0000)尝试此混音。没有ie过滤器,顺便说一句。
$from
$to
将永远不会有默认值,但即使它们有默认值,当我想跳过如上所述的参数时,它仍然没有帮助。什么?我只是向你展示了它的工作原理,这正是你所要求的。你想跳过第三个和第四个论点,这就是为什么。也许你不明白我的答案。这就是使用值调用mixin的方式。只要传递命名参数,就可以使用其他两个参数。对不起,伙计,我愚蠢地误读了代码片段中
@mixin
@include
,所以我以为您在实际mixin中声明了
$from
$to
的默认值。整天都在混搭,所以大脑有点疲劳。不管怎样,一切都很好。干杯