less - 在LESS中循环遍历一组名称/值对

标签 less

有没有办法让LESS的名称/值对数组循环?像这样的东西:

arr = alice: black, bob: orange;

.for(arr) // something something //
   .cl-@{name} {
       background-color: @{value}
   }

要生成这样的内容:
.cl-alice { background-color: black; }
.cl-bob { background-color: orange; }

我知道您可以for-loop an array,但是我不确定它是否可以是对象数组而不是LESS中的值。

最佳答案

@ seven-phases-max给出的答案非常有效。为了完整起见,您还应该注意,在没有导入的"for"代码段的情况下,您可以在Less中执行相同的操作。

来自lesscss.org

In trying to stay as close as possible to the declarative nature of CSS, Less has opted to implement conditional execution via guarded mixins instead of if/else statements, in the vein of @media query feature specifications.





In Less a mixin can call itself. Such recursive mixins, when combined with Guard Expressions and Pattern Matching, can be used to create various iterative/loop structures.



因此,您可以在Less中编写:

@array: alice black, bob orange;

.createcolorclasses(@iterator:1) when(@iterator <= length(@array)) {
    @name: extract(extract(@array, @iterator),1);
    .cl-@{name} {
        background-color: extract(extract(@array, @iterator),2);
    }
    .createcolorclasses(@iterator + 1);
}
.createcolorclasses();

或确实:

@array: alice black, bob orange;

.createcolorclasses(@iterator:1) when(@iterator <= length(@array)) {
    @name: extract(extract(@array, @iterator),1);
    &@{name} {
        background-color: extract(extract(@array, @iterator),2);
    }
    .createcolorclasses(@iterator + 1);
}
.cl-{
    .createcolorclasses();
}

关于less - 在LESS中循环遍历一组名称/值对,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23658087/

相关文章:

html - LESS 不起作用,一切看起来都不错

jquery - 一个 JQuery UI 网站的 CSS 规划(小部件和页面如何协同工作)

netbeans - 无法在 Netbeans 7.4 上添加 less-compiler lessc

css - 更少的 css 编译器。无法使用变暗属性

javascript - 保存less.js生成的.css文件

html - CSS Less watch compiler - 如何传递参数并根据参数生成多份CSS?

css - Bootstrap 3 + Less - 在更大的屏幕上禁用折叠导航栏

css - 如何在 .NET 中将 LESS 文件编译为 CSS 文件

html - 当存在一个特定类(class)的 child 时应用 CSS

twitter-bootstrap - 如何使用 16 或 24 列的 Bootstrap