2011-02-15 176 views
3

各種新的CSS3屬性接受無限多組值,即box-shadow和背景漸變。有沒有辦法獲得傳遞給Sass mixin的參數數組?

box-shadow爲例,理想的情況是應該能夠做到:

@include box-shadow(10px 15px 10px #FF0000, 15px 10px 10px #0000FF); 

的許多參數,只要你喜歡。問題在於Sass需要一個明確的參數數量,即使它沒有,我也知道無法循環使用它們。

我能想到的迄今最好的混入會像這樣:

@mixin box-shadow($v1: 0 0 10px #CCC, $v2: "", $v3: "", $v4: "", $v5: "") { 
    @if $v5 != "" { 
    -webkit-box-shadow: $v1, $v2, $v3, $v4, $v5; 
    -moz-box-shadow: $v1, $v2, $v3, $v4, $v5; 
    -o-box-shadow: $v1, $v2, $v3, $v4, $v5; 
    box-shadow: $v1, $v2, $v3, $v4, $v5; 
    } @else if $v4 != "" { 
    ... 
    } @else { 
    -webkit-box-shadow: $v1; 
    -moz-box-shadow: $v1; 
    -o-box-shadow: $v1; 
    box-shadow: $v1; 
    } 
} 

我想寫一組薩斯廠商餐飲CSS3混入的。 (可在:https://github.com/stevelacey/sass-css3-mixins)。

顯然,這是垃圾,冗長,限於5種風格,有沒有更好的方法?


編輯:

@Riklomas指出我這個:https://gist.github.com/601806這至少比我的代碼少重複,還在尋找一個妥善的解決辦法。

+1

簡單:獨自離開SASS,並開始使用LESSphp :)。 – mingos 2011-02-15 17:34:36

回答

-3

總之,沒有。

但是我不必在意這件事,Compass包裝了類似於上述的東西,很好。

7

嗨,我是Sass Core團隊的成員。我希望在將來添加一個var-args特性,但目前不可能。

3

隨着SASS 3.2現在可以使用像這樣工作的混入:

@mixin box-shadow($values...){ 
    -webkit-box-shadow: $values; 
    -moz-box-shadow: $values; 
    box-shadow: $values; 
} 

source

相關問題