Specs CSS命名规范 - BEM

阅读(2663)

BEM,由俄罗斯Yandex团队提出的 Block__Element--Modifier (块__元素--修饰符) 命名风格。

由三个部分组成:

  • Block: 可独立存在的实体,如menu
  • Element: 独立存在没有具体含义,需要依赖某个Block才有意义的元素,如item(menu item才有具体含义)
  • Modifier: Block或Element上的修饰符,如disabled, active, fixed

在一个命名中,三个部分不一定需要都具备;Block 可独立存在,Element 和 Modifier 不能独立存在。Element 以双下划线(__)作为前导符号,Modifier 以双连接符(--)作为前导符号,内部多个单词间以连接符(-)分隔

举例:

.menu{}
.menu__item{}
.menu__item--disabled{}
.menu__item--first-disabled{}
.menu--disabled{}

特点:

  • 原则简单,容易团队内达成一致。
  • 所有的结构都统一为 B-E-M 三级,扁平命名简化了层级。不会出现 .a .b .c .d .e{} 的累赘;这样的运行效率也更高。
  • 命名中不会出现标签名。也即意味着如果要控制 <li> ,则要逐个都写上 class="xxx__item"。
  • 带来的样式名长度增加,可借助 IDE 简化弥补。

refer:
http://getbem.com/naming/

Tags: bem,规范