我的代码更少:
body {
@var: white;
&.blue { @var: blue; }
&.red { @var: red; }
&.abc { @var: #badass; }
background-color: @var;
}
我希望,如果body
具有类.abc
,则变量@var
的值为#badass
,如果您有类.blue
值为blue
,依此类推。但事实并非如此,变量的值不会独立于其遗留类而改变。
答案 0 :(得分:2)
您需要为此创建参数化mixin:
.bg(@color){
background-color:@color;
}
然后以下代码将起作用:
body {
.bg("white");
&.blue{ .bg("blue"); }
&.red { .bg("red"); }
&.abc { .bg(#bada55); }
}
你正在做的事情不起作用,因为你正在重新分配变量 - 它完美地工作,但不是将新值写入类。 (每当你重新分配变量时,LESS创建新规则绝对没有意义。)此外,与任何其他编程语言一样,LESS具有范围,因此当它达到background-color: @var;
{{1}时已为其分配值@var
并相应地创建规则。以下内容可行(但当然没有意义):
white