我可以以某种方式重构以下代码片段以摆脱双修饰符声明吗?
.block {
&__element {
rule: value;
}
&--modifier {
rule: value;
}
&--modifier & {
&__element {
rule: value;
}
}
}
Run Code Online (Sandbox Code Playgroud)
需要输出:
.block {
property: value;
}
.block--modifier {
property: value;
}
.block--modifier .block__element {
property: value;
}
Run Code Online (Sandbox Code Playgroud)
小智 13
将元素嵌套在修饰符中是一个已知问题.有很多变通方法.
并在修改器中创建元素时使用它进行插值.
.block {
$block: &;
&__element {
property: value;
}
&--modifier {
property: value;
#{$block}__element {
property: value;
}
}
}
Run Code Online (Sandbox Code Playgroud)
见下面的输出.
它将获得父选择器并在之前剪切单词--(这是块).看起来很hacky,但这是最简单的方法.
@function block() {
$selector: str-slice(inspect(&), 2, -2);
$index: str-index($selector, '--') - 1;
@return str-slice($selector, 0, $index);
}
Run Code Online (Sandbox Code Playgroud)
这将返回块的名称,因此您不必重复它.
.block {
property: value;
&--modifier {
property: value;
#{block()}__element {
property: value;
}
}
}
Run Code Online (Sandbox Code Playgroud)
见下面的输出.
.block {
property: value;
}
.block--modifier {
property: value;
}
.block--modifier .block__element {
property: value;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2315 次 |
| 最近记录: |