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/