选择器是 CSS 的入口,也是影响样式可维护性的重要因素。本文汇总了常见的 CSS 选择器形式,包括基础选择器、组合选择器、伪类与伪元素。
基础选择器
| 选择器 | 语法 | 示例 | 说明 |
|---|
| 元素选择器 | element | p, 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 B | div p | 选择 A 内部的所有 B |
| 子选择器 | A > B | div > p | 选择 A 的直接子元素 B |
| 相邻兄弟 | A + B | h1 + p | 选择紧接在 A 后面的 B |
| 通用兄弟 | A ~ B | h1 ~ p | 选择 A 后面的所有 B |
| 链式组合 | A.B | button.primary | 同时满足 A 和 B |
| 列表组合 | A, B | h1, h2 | 选择 A 或 B |
伪类选择器
交互伪类
| 选择器 | 语法 | 说明 |
|---|
:hover | a:hover | 鼠标悬停 |
:active | button:active | 激活状态 |
:focus | input:focus | 获得焦点 |
:focus-within | .form:focus-within | 包含焦点元素 |
:focus-visible | button:focus-visible | 键盘焦点 |
:visited | a:visited | 已访问链接 |
:link | a:link | 未访问链接 |
结构伪类
| 选择器 | 语法 | 说明 |
|---|
:first-child | li:first-child | 第一个子元素 |
:last-child | li:last-child | 最后一个子元素 |
:nth-child(n) | li:nth-child(2) | 第 n 个子元素 |
:nth-last-child(n) | li:nth-last-child(2) | 倒数第 n 个子元素 |
:first-of-type | p:first-of-type | 第一个同类型元素 |
:last-of-type | p:last-of-type | 最后一个同类型元素 |
:nth-of-type(n) | p:nth-of-type(2) | 第 n 个同类型元素 |
:only-child | div:only-child | 唯一子元素 |
:only-of-type | p:only-of-type | 唯一同类型元素 |
表单伪类