我从BEM documentation可以读到
块可以嵌套
我了解到Blocks
应该是具有Elements
创建的内部结构的可重用组件,使它们在某种意义上是隔离的,但是如果我有例如我需要将Button
Block
与Text
Block
一起使用。 Text
块不会声明颜色(这是说明我的观点的简单示例,但可以是任何CSS属性),因此受Button
的影响:
<div class="button">
<div class="button__body">
<div class="text">
<span class="text__icon">
</span>
<span class="text__body">
Hello
</span>
</div>
</div>
</div>
和CSS:
.button {
font-size: 24px;
font-weight: bold;
background-color: lightgreen;
color: orange;
}
.button__body {
padding: 10px;
}
.text {}
.text__icon {
margin: 0 15px;
}
.text__body {
font-family: sans-serif;
}
问题:BEM如何处理嵌套块上的CSS效果?
是否应该将所有normalize.css
用作基础元素,因为我们不知道将来Block
会在哪里使用以及它们的行为。
答案 0 :(得分:1)
是否应该将所有
normalize.css
元素用作基本元素,因为我们不知道将来将在何处使用块以及它们的行为方式。
可以,但是信任父母比不信任父母更有效。因此,通常,应避免在作为其他块的祖先的DOM元素上使用继承的属性(font-size
,font-weight
,color
)。当然,除了您真正决定以这种方式工作的块。