2013-06-26 69 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