【发布时间】:2015-01-29 13:07:16
【问题描述】:
我想用一些颜色动态调用 .some-mixin()。这个mixins应该会生成一些样式,当颜色相等时应该生成特殊代码。
由于最终css代码的comprimation我想通过帮助变量来完成,我可以在哪里存储特殊代码的类。
也许示例代码会更有帮助:
.some-mixin(@newClass,@color,@color2){
.test-mixin(@newClass,@color,@color2);
.@{newClass}{
color: @color;
}
}
@classes: '';
.test-mixin(@newClass,@color,@color2) when (@color = @color2){
@classes: "@{classes}, @{newClass}";
}
.final-mixin(){
.@{classes}{
/*some styles*/
}
}
mixins的调用是由PHP生成的,最终代码应该是这样的:
.some-mixin("abc",#ffffff,#000000);
.some-mixin("xyz",#ffffff,#ffffff);
.some-mixin("jkl",#ff00ff,#ff00ff);
.final-mixin();
但是当我想编译 LESS 时,它会显示 infinite loop detected
这在 LESS 中可行吗?
任何建议都会有所帮助。
【问题讨论】:
-
哦,对不起,我有
with而不是when。现在它应该是完全 LESS 代码了。 -
不只是那个伙伴。带有
$的变量。我以前从未见过它们在 Less 中使用过。如果我纠正所有这些,mixin 和调用工作得很好(使用lesstester.com 编译时) -
是的,我很蠢什么的。它是 PHP 的变形 :)
-
.test-mixin和.final-mixin似乎是可以使用extend函数的情况。也许除了您当前的代码之外,您还可以解释一下您的原始要求是什么?看看是否有更好的方法可能会有所帮助。 -
好的,现在我明白你为什么收到
infinite loop消息了。您不能在 Less 中执行@classes: "@{classes}, @{newClass}";(除非使用一些技巧)。它是一个递归变量定义。