作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我可以以某种方式重构以下代码片段以摆脱 双修饰符声明 ?
.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.
--
之前的单词(这是块)。看起来很笨拙,但这是最简单的方法。
@function block() {
$selector: str-slice(inspect(&), 2, -2);
$index: str-index($selector, '--') - 1;
@return str-slice($selector, 0, $index);
}
.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/
我是一名优秀的程序员,十分优秀!