Skip to content
CSS 命名规则

CSS 命名十分重要,另外如有重名的情况,就会发生样式覆盖,导致最终效果显示错乱。对于命名,市面上有一些民间组织指定的命名规则,例如 BEM,SMACSS 和 OOCSS。

BEM 命名规则比较常见,B 代表 Block 块,E 代表 Element 元素,M 代表 Modifer 限定,并且 E 和 M 可以省略。

例如对于一个 button 按钮元素,我们可以给它指定 .button 这样的名字,它是一个 Block。

如果按钮有 primary 和 secondary 的区别,可以使用 .button--primary 和 .button-secondary 指定 M 限定部分。

对于更复杂的 HTML 结构,同时包含 BEM 三种的情况可以参考图片的示例。

这样的命名方式能最大限度的避免冲突,并且相关的元素同属于一个 Block,也更容易维护和阅读。

html
<nav class="nav">
  <!-- B: nav, E: menu, 使用两个下划线分割 -->
  <ul class="nav__menu">
    <!-- B: nav, E: item -->
    <li class="nav__item">
      <!-- B: nav, E: link, M: active -->
      <a href="#" class="nav__link nav__link--active">首页</a>
    </li>
    <li class="nav__item">
      <a href="#" class="nav__link">关于我们</a>
    </li>
    <li class="nav__item">
      <a href="#" class="nav__link">联系我们</a>
    </li>
  </ul>
</nav>