gpt4 book ai didi

Sass BEM : avoid modifier duplication when element is inside a modifier

转载 作者:行者123 更新时间:2023-12-04 05:30:01 26 4
gpt4 key购买 nike

我可以以某种方式重构以下代码片段以摆脱 双修饰符声明 ?

.block {
&__element {
rule: value;
}
&--modifier {
rule: value;
}
&--modifier & {
&__element {
rule: value;
}
}
}

想要的输出:
.block {
property: value;
}
.block--modifier {
property: value;
}
.block--modifier .block__element {
property: value;
}

最佳答案

修饰符内的嵌套元素是 已知问题 .有很多解决方法。

可变方式

将块元素存储在变量中。

并在修改器内创建元素时使用它进行插值。

.block {
$block: &;

&__element {
property: value;
}

&--modifier {
property: value;
#{$block}__element {
property: value;
}
}
}

See output below.



功能方式

1. 创建一个返回块元素的函数。

它将获取父选择器并剪切 -- 之前的单词(这是块)。看起来很笨拙,但这是最简单的方法。
@function block() {
$selector: str-slice(inspect(&), 2, -2);
$index: str-index($selector, '--') - 1;
@return str-slice($selector, 0, $index);
}

2. 使用内插函数。

这将返回块的名称,因此您不必重复它。
.block {
property: value;

&--modifier {
property: value;
#{block()}__element {
property: value;
}
}
}

See output below.



两种方式都会输出到:
.block {
property: value;
}

.block--modifier {
property: value;
}

.block--modifier .block__element {
property: value;
}

关于Sass BEM : avoid modifier duplication when element is inside a modifier,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32052836/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com