BEM即块(Block)、元素(Element)、修饰符(modifier),是由著名的俄罗斯搜索引擎团队Yandex提出的一种前端命名方法论。BEM命名约定更加严格,而且包含更多的信息,一般用于团队开发一个耗时的大项目中。
我们常见的BEM命名方式一般都是经过改良的,本文介绍的是Nicolas Gallagher(Twitter前端工程师)的改进版。
命名约定的格式如下:
.block{
... } /* 代表更高级别的抽象或组件 */
.block__element{
... } /* 代表.block的后代,用于形成一个完整的block整体 */
.block--modifier{
... } /* 代表block的不同状态或不同版本 */
之所以使用两个连字符和下划线而不是一个,是为了让自己定义的块可以用单个连字符来界定,如&