跳到主要内容

CSS 选择器速查表

选择器是 CSS 的入口,也是影响样式可维护性的重要因素。本文汇总了常见的 CSS 选择器形式,包括基础选择器、组合选择器、伪类与伪元素。

基础选择器

选择器语法示例说明
元素选择器elementp, div选择所有该元素
类选择器.class.button, .card选择具有该类的元素
ID 选择器#id#header, #main选择具有该 ID 的元素
通用选择器**选择所有元素

属性选择器

选择器语法示例说明
存在[attr][disabled]选择具有该属性的元素
精确匹配[attr="value"][type="text"]属性值精确匹配
开头匹配[attr^="value"][href^="http"]属性值以 value 开头
结尾匹配[attr$="value"][href$=".pdf"]属性值以 value 结尾
包含匹配[attr*="value"][class*="btn"]属性值包含 value
单词匹配[attr~="value"][class~="active"]属性值包含单词 value

组合选择器

选择器语法示例说明
后代选择器A Bdiv p选择 A 内部的所有 B
子选择器A > Bdiv > p选择 A 的直接子元素 B
相邻兄弟A + Bh1 + p选择紧接在 A 后面的 B
通用兄弟A ~ Bh1 ~ p选择 A 后面的所有 B
链式组合A.Bbutton.primary同时满足 A 和 B
列表组合A, Bh1, h2选择 A 或 B

伪类选择器

交互伪类

选择器语法说明
:hovera:hover鼠标悬停
:activebutton:active激活状态
:focusinput:focus获得焦点
:focus-within.form:focus-within包含焦点元素
:focus-visiblebutton:focus-visible键盘焦点
:visiteda:visited已访问链接
:linka:link未访问链接

结构伪类

选择器语法说明
:first-childli:first-child第一个子元素
:last-childli:last-child最后一个子元素
:nth-child(n)li:nth-child(2)第 n 个子元素
:nth-last-child(n)li:nth-last-child(2)倒数第 n 个子元素
:first-of-typep:first-of-type第一个同类型元素
:last-of-typep:last-of-type最后一个同类型元素
:nth-of-type(n)p:nth-of-type(2)第 n 个同类型元素
:only-childdiv:only-child唯一子元素
:only-of-typep:only-of-type唯一同类型元素

表单伪类

选择器语法说明
:checkedinput:checked选中状态
:disabledinput:disabled禁用状态
:enabledinput:enabled启用状态
:requiredinput:required必填字段
:optionalinput:optional可选字段
:validinput:valid有效输入
:invalidinput:invalid无效输入

其他伪类

选择器语法说明
:not(selector):not(.hidden)不匹配选择器
:root:root根元素
:emptydiv:empty空元素
:target:target目标元素

伪元素选择器

选择器语法说明
::beforep::before元素内容之前
::afterp::after元素内容之后
::first-linep::first-line第一行
::first-letterp::first-letter首字母
::selection::selection选中文本
::placeholderinput::placeholder占位符
::markerli::marker列表标记

特异性计算

选择器类型特异性示例
内联样式1000style="..."
ID 选择器100#header
类/属性/伪类10.button, :hover
元素/伪元素1p, ::before
通用选择器0*

计算规则

  • 从左到右比较
  • 数值越大优先级越高
  • 相同特异性时,后出现的生效

常用选择器模式

实用组合

/* 清除最后一个元素的边距 */
.item:last-child {
margin-bottom: 0;
}

/* 表格斑马纹 */
tr:nth-child(even) {
background-color: #f5f5f5;
}

/* 禁用状态 */
.button:disabled {
opacity: 0.5;
cursor: not-allowed;
}

/* 必填字段标记 */
input:required + label::after {
content: " *";
color: red;
}

使用建议

  • 优先使用类选择器:灵活、可复用
  • 避免过度嵌套:最多 3-4 层
  • 理解特异性:避免样式冲突
  • 合理使用伪类:提供交互反馈
  • 注意性能:避免过于复杂的选择器

这份速查表帮助你快速查找和确认选择器语法,详细用法请参考教程正文。