较少的CSS从循环中调用动态变量

时间:2013-08-16 11:26:55

标签: css variables loops dynamic less

我想做的事情: 我(现在)有7种颜色作为变量。我希望能够在几个地方使用它们并迭代它们。

这就是我的工作

@color1:#06A1C0;
@color2:#8F4F9F;
@color3:#ED1D24;
@color4:#5A9283;
@color5:#B38C51;
@color6:#EC008C;
@color7:#8F4F9F;

@iterations: 8;
.mixin-loop (@index) when (@index > 0) {
color@{index}:hover{
  @tmp: ~'@color';
  @num: @index;
      color: @tmp@num;
  }

.mixin-loop(@index - 1);
}
.mixin-loop (0) {}
.mixin-loop(@iterations);

我需要什么 我希望这样做

.color1:hover{color#06A1Co}
.color2:hover{color#8F4F9F}
etc..

问题是什么? 我无法找到一种评估@ tmp @ num来获取实际变量的方法。

更新 Ash Hitchcock提供的完美答案。

2 个答案:

答案 0 :(得分:13)

我今天一直试图用LESS做同样的事情。我想出的解决方案是使用Parametric Mixin来创建(定义)变量,请参阅更新的示例:

@color1:#06A1C0;
@color2:#8F4F9F;
@color3:#ED1D24;
@color4:#5A9283;
@color5:#B38C51;
@color6:#EC008C;
@color7:#8F4F9F;

@iterations: 7;

.define(@var) {
  @colorSet: 'color@{var}';
}


.mixin-loop (@index) when (@index > 0) {
color@{index}:hover{
    .define(@index);
    color:  @@colorSet;
  }

.mixin-loop(@index - 1);
}
.mixin-loop (0) {}
.mixin-loop(@iterations);

希望这有帮助。

答案 1 :(得分:-1)

为什么不在CSS文件中使用它们?你为什么要在你的文件中尝试它们?这不是一个好主意 为每个DIV使用CSS会很好。给它一个代码类似的类:

<div class='@if(condition == true) {"thisclass"} else {"thatclass"}'></div>

只需使用一个CSS即可满足所有条件。那很简单。