我正在使用BEM,并且有一个包含多个修饰符的元素:
<div class="block__element block__element--m1 block__element--m2"></div>
Run Code Online (Sandbox Code Playgroud)
我正在使用SCSS并利用它来编写与BEM兼容的嵌套规则.如果我想编写一个规则,其中元素(如上所述)同时具有m1和m2修饰符,是否有一种方法可以编写与我当前编写它们的方式兼容的方法?这是我之后的语法,但会导致语法错误:
.block {
display: block;
&__element {
display: inline;
&--m1 {
background-color: red;
}
&--m2 {
background-color: green;
}
// Syntax error
&--m1&--m2 {
background-color: yellow;
}
}
}
Run Code Online (Sandbox Code Playgroud)
我可以通过使用属性选择器来想办法,但有更简洁的方法吗?
对于记录,编译的属性选择器应该是:
.block__element--m1.block__element--m2
Run Code Online (Sandbox Code Playgroud)
Rob*_*ert 18
@ 3rdthemagical的回答确实给了我一些更好的解决方案的灵感.Sass根本不喜欢&在选择器开头之后出现,但它并不介意它包含在#{}:
.block {
display: block;
&__element {
display: inline;
&--m1 {
background-color: red;
}
&--m2 {
background-color: green;
}
// Correct!
&--m1#{&}--m2 {
background-color: yellow;
}
}
}
Run Code Online (Sandbox Code Playgroud)