面试题答案
一键面试BEM 命名规范解释
BEM 即块(Block)、元素(Element)、修饰符(Modifier),是一种用于前端开发的 CSS 命名规范。
- 块(Block):是一个独立的实体,在页面中有明确意义和功能,通常对应一个组件或模块,如
header
、button
等。块名是一个单词或多个单词组合,单词间以-
分隔。 - 元素(Element):是块的组成部分,不能脱离块单独存在,如按钮中的文本
button__text
。元素名紧跟块名,以__
分隔。 - 修饰符(Modifier):用于描述块或元素的不同状态或样式变化,如
button--disabled
表示禁用状态的按钮。修饰符紧跟块名或元素名,以--
分隔。
在 CSS 模块化开发中的优势
- 清晰的结构和可维护性:通过明确块、元素、修饰符的关系,代码结构一目了然。当需要修改某个样式时,能快速定位到对应的 CSS 规则。例如一个页面有多个不同状态按钮,基于 BEM 命名,很容易区分不同按钮状态的样式规则。
- 易于团队协作:规范的命名方式使得团队成员在阅读和编写 CSS 时遵循统一标准,减少命名冲突,提高开发效率。新成员加入项目也能快速理解 CSS 代码结构。
- 可复用性:每个块是独立的,具有自己的样式和功能,方便在不同项目或页面中复用。例如按钮组件,无论在哪个页面使用,其 BEM 命名及样式都保持一致,复用方便。
简单按钮组件命名示例
假设我们有一个简单按钮组件:
- 块:按钮整体作为一个块,命名为
button
。 - 元素:按钮上的文本是按钮的一部分,作为元素,命名为
button__text
。 - 修饰符:如果按钮有禁用状态,作为修饰符,命名为
button--disabled
。
在 HTML 中的使用示例:
<button class="button button--disabled">
<span class="button__text">点击我</span>
</button>
在 CSS 中的样式示例:
.button {
background-color: blue;
color: white;
padding: 10px 20px;
}
.button--disabled {
background-color: gray;
cursor: not-allowed;
}
.button__text {
font-size: 16px;
}