不是BEM html和CSS:
<div class="item active">
<div class="square"></div>
<div class="text">Step 1</div>
</div>
<div class="item">
<div class="square"></div>
<div class="text">Step 2</div>
</div>
.item {
display: flex;
margin: 10px 0;
}
.item .text {
color: gray;
}
.item .square {
height: 20px;
width: 20px;
border: 1px solid gray;
}
.item.active .text {
color: red;
}
.item.active .square {
border-color: red;
}
在这种情况下,要将某些项目标记为活动,我只是将“活动”类添加到父标记。
BEM版本:
<div class="item">
<div class="item__square item__square_active"></div>
<div class="item__text item__text_active">Step 1</div>
</div>
<div class="item">
<div class="item__square"></div>
<div class="item__text">Step 1</div>
</div>
.item {
display: flex;
margin: 10px 0;
}
.item__text {
color: gray;
}
.item__square {
height: 20px;
width: 20px;
border: 1px solid gray;
}
.item__text_active {
color: red;
}
.item__square_active {
border-color: red;
}
在这种情况下,我必须将两个类item__text_active和item__square_active添加到适当的子元素。而且看起来很尴尬。
问题:BEM方法是否正确实施?有没有一种方法可以对块使用一个修饰符,该修饰符会更改嵌套元素的样式?
从论坛(https://ru.bem.info/forum/1608/)获取答案:允许从块修饰符到元素的级联(例如,用于主题化)