2014-04-29 62 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