问题 使用@while循环创建动态类名[duplicate]


这个问题在这里已有答案:


5195
2018-05-11 10:56


起源

你试过运行这段代码了吗?是否有错误(错误是什么?)?输出是否不正确? - cimmanon
引发以下错误:语法错误:“$ val:$ val +”后的无效CSS:预期表达式(例如1px,粗体)是“.dC#{$ i};” - anjiTechGuy


答案:


要正确地写出该表达式将是这样的:

$val: $val + '.dC#{$i}';

但是你忘了考虑逗号,所以你的选择器最终看起来像这样:

.dC4.dC5 {
  color: black;
}

即使你确实添加了逗号,你最终会得到所有3个以逗号开头的类。有更有效的方法来执行您正在寻找的正确占用逗号的内容:

$minLevel: 1;
$whiteLevel: 3;
$blackLevel: 5;

%white {
    color: white;
}

@for $i from $minLevel through $whiteLevel {
    .dC#{$i} {
        @extend %white;
    }
}

$blackSelectors: ();
@for $i from $whiteLevel + 1 through $blackLevel {
    $blackSelectors: append($blackSelectors, unquote('.dC#{$i}'), comma);
}

#{$blackSelectors} {
    color: black;
}

输出:

.dC1, .dC2, .dC3 {
  color: white;
}

.dC4, .dC5 {
  color: black;
}

15
2018-05-11 12:38



我们同时发布,在审核了你的答案之后,我所遗漏的只是%而不是。对于选择器。谢谢! - anjiTechGuy