css - LESS - 通过遍历两个变量创建 ID

标签 css loops variables less

我正在尝试创建一个循环,输出坐标 -2,-2 到 2,2 之间所有可能的组合。有没有办法在不创建多个循环的情况下做到这一点?


期望的输出

#p1x0,#p2x0,#p-1x0,#p-2x0,#p1x1,#p-1x-1,#p-1x1,#p1x-1,#p2x2,#p-2x-2,p2x-2,p-2x2,#p2x1,#p2x-1,#p1x2,#p1x-2,#p-2x1,#p-2x-1,#p-1x2,#p-1x-2,#p0x-1,#p0x-2,#p0x0,#p0x1,#p0x2{}

当前尝试

#cube-side {
border:red;
}

.create-cubes(@n, @i: -2, @z: -2, @side-sum:@i + @z) when (@side-sum =< @n) {
    & when (@i < @z) {
        .create-cubes(@n, @i+1);
    }
    & when (@z < @i) {
        .create-cubes(@n, @z+1);
    }
    #p@{i}x@{z}:extend(#cube-side) {}
}

.create-cubes(4);

输出

#cube-side,
#p-2x-2 {
  border: red;
}

最佳答案

有一种方法可以完全不使用任何循环:

#cube-side {
    border: red;
}

-2, -1, 0, 1, 2 {
    #p&x&:extend(#cube-side) {}
}

虽然对于任意值列表来说,嵌套循环当然是最简单的解决方案(参见 example ),例如(在“纯粹的 Less”中)是这样的:

.create-cubes(-2, 2);
.create-cubes(@min, @max) {
    .i; .i(@i: @min) when (@i <= @max) {
        .j; .i(@i + 1);
    }
    .j(@j: @min) when (@j <= @max) {
        #p@{i}x@{j}:extend(#cube-side) {}
        .j(@j + 1);
    }
}

关于css - LESS - 通过遍历两个变量创建 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29856323/

相关文章:

javascript - 如何使弹出式 div 在单击时隐藏/显示

c - C 中计数和计数位的输出不正确

javascript - 通过使用 javascript 单击单个 div 循环浏览 css 样式表文件

CSS vertical-align,如何去除文本下方的小间距?

java - 在 Java 二维数组中查找最小值和最大值

r - 如何在R中的循环中获取索引

perl - 在循环中调用时,“我的”是否会覆盖内存?

c# - c#中用于变量声明和初始化的正则表达式

ios - 为在调试器外部运行的 IOS 应用程序设置环境变量

css - webkit-filter 中断溢出 : hidden