【发布时间】:2015-08-10 12:28:26
【问题描述】:
所以基本上我有一个颜色列表,我想根据它在 DOM 中的深度来更改 html 中列表的边框颜色。
这是我目前拥有的 SASS:
$colors:
green,
red,
blue,
orange,
;
.list {
border-color:nth($C-subList-borders,1);
.list {
border-color:nth($C-subList-borders,2);
.list {
border-color:nth($C-subList-borders,3);
.list {
border-color:nth($C-subList-borders,4);
}
}
}
}
生成这个 css:
.list { border-color: green; }
.list .list { border-color: red; }
.list .list .list { border-color: blue; }
.list .list .list .list { border-color: orange; }
我想要做的是根据我在 $colors 变量中的颜色数量生成 .list 规则,而不是手动执行。但我不知道是怎么回事。
我知道它会有一个@each 或@for 循环,但我无法弄清楚使它工作的语法。我不确定这是否可能。
----- 更新:我自己的答案 -----
由于问题被标记为重复,我无法将其发布为实际答案,因此必须这样做。感谢隐藏的霍布斯的回答。这让我了解了语法应该如何工作。你的答案中有一个多余的@each,所以我写了这个(我会接受你的,因为你的回答给了我灵感)
$colors: green red blue orange;
$class: '.list';
$selector: $class;
@for $i from 1 through length($colors) {
$color: nth($colors,$i);
#{$selector} {
border-color: $color;
}
$selector: $selector $class;
}
【问题讨论】:
-
不完全相信这是重复的。虽然到目前为止这两个问题有相似之处,它们都是循环和嵌套列表,但我认为
$colours变量作为循环源的使用使这个问题足够不同,以至于不能被视为重复。例如,我的回答与链接的问题无关。 -
您使用颜色而不是边距这一事实不足以成为“不重复”的理由。如何获得步数无关紧要:还有很多其他问题涉及如何遍历项目列表。