2014-04-29 131 views
0

我正在爲LESS中的顏色循環工作。問題是我的@joined參數。我想要選擇'&'給這個類,但是我得到一個語法錯誤。我怎麼能設置這個?減少無法識別的參數

SyntaxError: could not understand value for named argument 

.coloursMixin(@joined: &;) { 

@white: #fff; 
@black: #000; 
@array: 'white','black'; 

.coloursMixin(@joined: &;) { 
    .for(@array); .-each(@array) { 
     @name: e(@array); 
     @[email protected]{name} {color: @@name} 
    } 
} 


// ............................................................ 
// .for 

.for(@i, @n) {.-each(@i)} 
.for(@n)  when (isnumber(@n)) {.for(1, @n)} 
.for(@i, @n) when not (@i = @n) { 
    .for((@i + (@n - @i)/abs(@n - @i)), @n); 
} 

// ............................................................ 
// .for-each 

.for(@array) when (default()) {.for-impl_(length(@array))} 
.for-impl_(@i) when (@i > 1) {.for-impl_((@i - 1))} 
.for-impl_(@i)     {.-each(extract(@array, @i))} 
+0

爲什麼你需要'@ joined'屬性?難道你不能簡單地用'&。@ {name} {color:@@ name}'來使用一個無參數混合嗎?如果你在選擇器中調用它,那麼這個選擇器將接收數組項目類。 – helderdarocha

回答

2

您不需要傳遞任何參數。如果您想將不同類適用於每個選擇,你可以調用裏面一個無參數的混入,並直接使用&

.coloursMixin() { 
    .for(@array); .-each(@array) { 
     @name: e(@array); 
     &[email protected]{name} {color: @@name} 
    } 
} 

你可以使用不帶任何參數:

.section { 
    .coloursMixin(); 
} 

它會將選擇器附加到每個類別:

.section.white { 
    color: #ffffff; 
} 
.section.black { 
    color: #000000; 
} 
+0

是的,謝謝,我只是希望如果我想寫這樣的東西,我可以寫。 .section { 。黑色{ 顏色:#000000; } } – hyperdrive

+0

這會給你一個上下文中的選擇器類。如果你有一個特定的情況,你想用mixin來實現,或許更好的方法是提出一個問題,顯示你想要獲得的CSS輸出*以及數據(包含類名稱的變量?顏色)生成它。你可能會得到一些有趣的答案。 – helderdarocha