我有关于BEM结构的问题。混合元素/修饰符在语义上是否正确?我有一个英雄和投资组合模块。我想在hero模块中使用portfolio__item,但它应该使用hero__item的基础样式。这是做这件事的正确方法,是否允许混合这些元素?BEM css - 混合元素/修饰符
<section class="hero hero--collage hero--bottom-decoration">
<div class="portfolio__item hero__item hero__item--animated">
<a href="http://www.google.nl">
<div class="hero__hover">
<span class="hero__hover__content h1">Hover title</span>
</div>
<img src="http://www.google.nl" class="hero__image">
</a>
</div>
</section>
<section class="portfolio">
<div class="portfolio__item">
<a href="http://www.google.nl">
<img src="http://www.google.nl" class="hero__image">
</a>
</div>
</section>
的'portfolio__item'具有几乎相同的造型为'英雄 - 拼贴hero__item'。所以为了避免重复的CSS,我想我可以在'hero - collage'里面使用'portfolio__item'。扩展(我使用sass)从'portfolio__item'到'hero__item - portfolio'的样式是最好的方法吗? –
如果你使用LESS/SASS,你可以创建一个像.virtual-1这样的通用虚拟类,并使用它扩展另一个类,如: .hero - collage {0} {0} {0} {0} .virtual-1; //定制样式 } .portfolio__item { .virtual-1; //定制样式 } –
感谢您的评论,我了解扩展。但很多人不推荐使用扩展。但在这种情况下,我认为没关系,因为几乎所有的类都是在BEM结构下的根级。 –