在现代网页开发中,良好的代码组织和清晰的命名规则是提高开发效率、确保代码可读性和可维护性的关键,BEM(Block Element Modifier)是一种流行的CSS命名约定,它通过将选择器分为三部分:block(块)、element(元素)和modifier(修饰符),来帮助开发者更好地组织和理解CSS代码,本文旨在介绍BEM命名法的基本概念,并提供一个详尽的BEM命名对照表,以供网站小百科前端开发人员参考使用。
BEM命名法简介
BEM命名法的核心思想是将CSS的选择器分解为三个部分:block、element和modifier,这种命名方式有助于区分不同的选择器类型,并使得代码更加清晰易读。.my-custom-class就是一个典型的BEM命名示例,其中my-custom-class是block,custom-class是element,而则作为modifier。
BEM命名对照表
以下是一份详细的BEM命名对照表,涵盖了常见的CSS选择器类型及其对应的BEM命名规范:
基本选择器
| 选择器类型 |
BEM命名 |
说明 |
.class-name |
.className |
类名 |
#id-name |
#idName |
ID选择器 |
.element-name |
.elementClassName |
直接选择元素类名 |
.element-name > .content |
.elementClassName > .contentClassName |
选择器嵌套 |
伪类选择器
| 选择器类型 |
BEM命名 |
说明 |
hover |
hoverClassName |
鼠标悬停时应用的类名 |
active |
activeClassName |
当前活动状态时应用的类名 |
focus |
focusClassName |
获取焦点时应用的类名 |
disabled |
disabledClassName |
禁用状态下应用的类名 |
伪元素选择器
| 选择器类型 |
BEM命名 |
说明 |
:before |
:beforeClassName |
前置文本或元素 |
:after |
:afterClassName |
后置文本或元素 |
:content |
:contentClassName |
内容区块 |
属性选择器
| 选择器类型 |
BEM命名 |
说明 |
[attr="value"] |
[attr="value"]ClassName |
带有特定属性值的元素 |
[attr="value"][class] |
[attr="value"][class="className"] |
带有特定属性值且具有特定类名的元素 |
[attr="value"][class][data-attribute] |
[attr="value"][class][data-attribute="dataValue"] |
带有特定属性值且具有特定类名且具有特定数据属性的元素 |
其他选择器
| 选择器类型 |
BEM命名 |
说明 |
~ClassName |
相邻元素选择器 |
~> |
~>ClassName |
相邻兄弟元素选择器 |
~*ClassName |
所有相邻同级元素选择器 |
~+ClassName |
所有相邻同级元素选择器,包括子级元素 |
~-ClassName |
所有相邻同级元素选择器,不包括子级元素 |
~nth-child(n) |
~nth-child(n, ClassName) |
n号孩子元素选择器 |
~nth-last-child(n) |
~nth-last-child(n, ClassName) |
n号最后孩子元素选择器 |
~nth-of-type(n) |
~nth-of-type(n, ClassName) |
n号同种类型的元素选择器 |
~not(ClassName) |
~not(ClassName) |
不包含某个类名的元素选择器 |
~has(ClassName) |
~has(ClassName) |
包含某个类名的元素选择器 |
~has(ClassName)[attribute] |
~has(ClassName)[attribute="value"] |
包含某个类名且具有特定属性值的元素选择器 |
通过上述的BEM命名对照表,网站小百科前端开发人员可以更清晰地理解和运用BEM命名法,从而编写出结构清晰、易于维护的CSS代码。
总浏览