BEM命名规范
什么是BEM
B(block) E(element)M(modifier),分别代表块,元素,修饰符。是一种CSS命名规范,有利于CSS代码更加利于维护。
block
可重用的功能独立的页面组件。在HTML中,块由class属性表示。
特性
- 块的名称描述其用途(菜单或者按钮)而不是状态(红色或者黄色)
- 块不应该影响其周围环境,意味着不应该设置该块的外部边距或者定位
- 使用BEM时,也不应该使用CSS标记或者ID选择器
- 块之间可以嵌套
- 可以有任意层数的嵌套层级
element
块的合成部分,不可以单独使用
特性
- 描述其用途,而不是状态
- 通过"__"和块进行分割
- 元素始终是块的一部分,而不是另一个元素。这意味着元素名称不能定义层次结构
modifier
定义块或元素的外观、状态或行为的实体
特性
- 修饰符通过"--"或者"_"连接
- 描述一个外观(大小,颜色),状态(disabled,focused),行为等
BEM规范的优缺点
优点:
- 不同表达代表不同含义,使得css代码结构更加清晰(即代表模块,还是一个模块中的元素亦或状态)
- 命名规范,不同团队风格统一更易于维护
缺点:
- 命名较长,现在项目中一般都会引入css预处理器,如scss,less等,这样使得命名较长这个缺点并不是那么的严重
@keyboarder-yang