我和我的团队已经开始实施类似 BEM 的东西(我们以这篇文章为起点)。到目前为止,我所读到的似乎是有道理的。我正在考虑的一个大问题是如何为修改后的组件设置样式。
例如,假设我有.avatar
和.avatar--alternate
组件/修饰符。也许交替的背景是黑色而不是白色。我应该使用什么 CSS 选择器来设置备用标题的样式,为什么?
我在这里列出了场景:
<div class="avatar">
<h2 class="avatar-heading">Lorem ipsum...</h2>
</div>
<div class="avatar avatar--dark">
<h2 class="avatar-heading">Lorem ipsum...</h2>
</div>
// _typography.scss
h1 {
color: #000;
}
// _avatar.scss
.avatar {
background: #fff;
}
.avatar--dark {
background: #000;
}
.avatar-heading {
color: #222;
}
// option A
.avatar--dark {
.avatar-heading {
color: #fff;
}
}
// option B
.avatar-heading--dark {
color: #fff;
}
// option C?
我的直觉告诉我 B,因为我这是最不具体的标题样式方式,并且似乎是最“可扩展”或“面向未来”的。另一方面,A 非常引人注目,因为我可能也有.avatar-subHeading
,也许在某些段落中我可能会开始患上类炎(?)(例如<h1 class="avatar-heading avatar-heading--dark">
)