Sass 3.2中添加了变量参数.
@mixin hello($arguments...) {
property: $arguments;
}
//Usage:
@include hello(1);
@include hello(1, 2, 3);
@include hello(1, 2);
Run Code Online (Sandbox Code Playgroud)
但是,此参数不接受默认值,如此 ($args...: default-value)
现在,我正在使用此代码,但有更好的方法吗?
@mixin transition($values...) {
$values: null !default;
@if $values == null {
$values: all 0.3s ease;
}
-webkit-transition: $values;
-moz-transition: $values;
-ms-transition: $values;
-o-transition: $values;
transition: $values;
}
Run Code Online (Sandbox Code Playgroud)
您的解决方案不起作用.当没有参数使用时,例如
.foo { @include transition; }
Run Code Online (Sandbox Code Playgroud)
该transition混入返回一个错误:
() isn't a valid CSS value.
Run Code Online (Sandbox Code Playgroud)
可以使用length()函数将变量参数视为列表.我建议这个解决方案:
@mixin transition($values...) {
// Setting the default value
@if length($values) == 0 {
$values: all 0.3s ease;
}
-webkit-transition: $values;
-moz-transition: $values;
-ms-transition: $values;
-o-transition: $values;
transition: $values;
}
Run Code Online (Sandbox Code Playgroud)
演示:http://sassbin.com/gist/5867258/
PS all和ease是默认值,所以默认值可以简化为$values: 0.3s.