【发布时间】:2020-04-16 09:22:56
【问题描述】:
我想知道当我们必须使用 BEM 和 SASS 编写可重用的 Web 组件(考虑到可能被用户覆盖)时的最佳方法:
假设有一个主元素和一个子元素,所以使用 bem:
<div class="main">
<div class="main__child"></div>
</div>
我想重点介绍 SASS 中的两种方法:
方法 1)
.main {
width: 200px;
height: 200px;
background-color: red;
.main__child {
width: 100px;
height: 100px;
background-color: orange;
}
}
这个对应
.main {
width: 200px;
height: 200px;
background-color: red;
}
.main .main__child {
width: 100px;
height: 100px;
background-color: orange;
}
方法 2)
.main{
width: 200px;
height: 200px;
background-color: red;
&__child {
width: 100px;
height: 100px;
background-color: orange;
}
}
这个对应
.main {
width: 200px;
height: 200px;
background-color: red;
}
.main__child {
width: 100px;
height: 100px;
background-color: orange;
}
在第一种方法中,我们有一个更具体的规则,这样我们就可以只选择 .main__child 是 .main 类的后代。 (强关系)
在第二种方法中,这两个类在 css 中技术上是分开的。由于与号 (&)。
我对此感到困惑。在网上阅读似乎常见的模式是第二种方法。 你能给我更多的解释吗?甚至考虑类覆盖?
【问题讨论】:
-
如果我们遵循 BEM 方法,那么选择器 .main__child 已经表明它是 .main 的后代,并且只应在这种情况下使用,因此方法 1) 是多余的。它还增加了选择器的特异性,这是我尽量避免的。
-
好的,听起来不错,谢谢