与BEM类命名约定混淆.更深层次

gsk*_*kii 6 html css class naming-conventions bem

例如,我有一个带菜单元素的菜单块:

.menu
.menu__element
.menu__element--current
Run Code Online (Sandbox Code Playgroud)

但是让我们说.menu块被包含在另一个块中,.header

在这种情况下如何处理命名?

.header 
.header__menu 
.header__element 
Run Code Online (Sandbox Code Playgroud)

要么

.header 
.header__menu 
.header__menu__element 
Run Code Online (Sandbox Code Playgroud)

要么

.header 
.menu 
.menu__element
Run Code Online (Sandbox Code Playgroud)

tad*_*uta 7

考虑使用mixins(同一DOM节点上的几个实体):

<div class="header">
    <ul class="menu header__menu">
        <li class="menu__element"></li>
        <!-- ... -->
    </ul>
</div>
Run Code Online (Sandbox Code Playgroud)

所以块菜单也是当时的元素header__menu.这使您可以为任何抽象菜单应用样式,并为标题内的特定菜单添加一些特殊规则.


Rob*_*Rob 3

菜单本身应该是一个类,因此 .menu 应该足够了。如果它是一个仅在标题中而不在其他任何地方的菜单,则为 .header-menu。然后你可以直接指向菜单,而不需要通过标头类。

如果您更喜欢按照您概述的方式进行操作,则使用 .header_menu。