对变量的多次引用肯定会导致颜色函数出现问题。这可能是一个错误。我还没有想出 LESS 1.3.3 或更低版本的解决方案。
@colours
但是,通过构建两个更大的“数组”类型变量,并将@colour-names
所有单独定义的颜色变量放入其中,我确实在 LESS 的最新(当前测试版)版本(1.4)中提出了一个可行的解决方案。然后我们使用新extract()
函数来访问循环中的那些,你可以得到你想要的。此时您必须确定 1.4 是否适合您。
少 1.4 工作
更少的代码
@num-colours: 3;
@colour-1: #FF0000;
@colour-name-1: "red";
@colour-2: #00FF00;
@colour-name-2: "green";
@colour-3: #0000FF;
@colour-name-3: "blue";
@colours: @colour-1 @colour-2 @colour-3;
@colour-names: @colour-name-1 @colour-name-2 @colour-name-3;
.define-colours-loop (@index) when (@index =< @num-colours) {
@colour: extract(@colours, @index);
@name: extract(@colour-names, @index);
*[data-colour="@{name}"] {
background-color: @colour;
background-color: hsla(hue(@colour), saturation(@colour), lightness(@colour), 0.5);
}
.define-colours-loop((@index + 1));
}
.define-colours-loop (0) {}
.define-colours-loop (1);
CSS 输出
*[data-colour="red"] {
background-color: #ff0000;
background-color: rgba(255, 0, 0, 0.5);
}
*[data-colour="green"] {
background-color: #00ff00;
background-color: rgba(0, 255, 0, 0.5);
}
*[data-colour="blue"] {
background-color: #0000ff;
background-color: rgba(0, 0, 255, 0.5);
}