2013-06-26 64 views
3

在Sass 3.2中添加了可变参数。SASS - 可变参数的默认值

@mixin hello($arguments...) { 
    property: $arguments; 
} 

//Usage: 
@include hello(1); 
@include hello(1, 2, 3); 
@include hello(1, 2); 

然而,这种说法不接受默认值,像这样($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; 
} 
+0

我看不到任何其他解决方案,而不是你的不幸。 – Christoph

+1

https://github.com/nex3/sass/issues/810 – cimmanon

回答

5

您的解决方案不起作用。当没有参数使用时,e。 G。

.foo { @include transition; } 

transition混入返回一个错误:

() isn't a valid CSS value. 

可变参数可以被视为使用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; 
} 

演示:http://sassbin.com/gist/5867258/

PS alleasedefaults,所以默认值可以简化为$values: 0.3s