B代表Block
E代表Element
M代表Modifier
Block(块)
- 块的命名是描述块的用途,不应该包含块的状态
- √:menu、button
- ×:red、big
- 块不应该影响它身处的环境
- 不应该设置几何、位置属性
- 不使用Css标签选择器和Id选择器
Element (元素)
- 元素的命名是描述元素的用途,不应该包含元素的状态
- 元素的命名结构是block-name__element-name
- 元素名还会包含它父级块的名字
- 用双下划线分割块和元素的名字
Modifier(修饰符)
- 修饰符用来描述块或元素的外观
- 颜色、尺寸
- 启用、禁用
- 用单下划线分割修饰符和块和元素的名字
- .header__input_disabled
- .menu__menuItem_small
规范中不使用小驼峰,而是使用单横线分割更好
但是单横线不方便ctrl d选择整个类名,所以我修改为使用小驼峰