在scss中开发
我有两个变量列表:
$ids: 21, 33, 73;
$colors: #fff, #000, #333;
以及以下@each循环。
@each $id, $color in ($ids, $colors) {
.category--#{$id},
.post--#{$id} {
color: #{$color};
}
}
我想显示以下内容
.category--21,
.post--21 {
color: #fff
}
.category--33,
.post--33 {
color: #000
}
.category--73,
.post--73 {
color: #333
}
但我得到了这个
.category--21,
.post--21 {
color: 33;
}
.category--#fff,
.post--#fff {
color: #000;
}
不确定我的结构。显然,我有更长的变量列表(为了演示目的,每个列表只添加了3个)。
任何建设性的反馈欢迎。感谢
答案 0 :(得分:2)
根据我的理解,我认为@each
不适合您,因为您没有将键和值对作为一个项目。以下是documentation says about @each
:(重点是我的)
@each指令也可以使用多个变量,如@each $ var1,$ var2,... in< list>。如果< list>是一个列表列表, 子列表的每个元素都分配给相应的变量 。
从上面的陈述中可以看出,在您的情况下,$ids
将被视为一个列表,$colors
将被视为另一个列表。这意味着
$id
为21
,$color
为33
且73
未分配$id
为#fff
,$color
为#000
,#333
未分配。最好使用@for
循环,如下面的代码段所示:
$ids: 21, 33, 73;
$colors: #fff, #000, #333;
@for $i from 1 through length($ids) {
$id: nth($ids, $i);
$color: nth($colors, $i);
.category--#{$id},
.post--#{$id} {
color: #{$color};
}
}
答案 1 :(得分:2)
嗨,你滥用它:D @each是列表的迭代列表,见下文
$pair: (21, #fff), (33, #000), (73, #333);
@each $id, $color in $pair {
.category-#{$id},
.post-#{$id} {
color: #{$color};
height: 20px;
}
}
doc reference:http://sass-lang.com/documentation/file.SASS_REFERENCE.html#each-multi-assign