跳到主要内容

CSS 选择器速查

按元素、关系、属性和状态选择网页节点。选择器负责匹配元素;最终样式还要经过来源、层、重要性、优先级和顺序等层叠规则。

基础与关系​

选择器匹配
pp 元素
.card / #mainclass / id
*任意元素
h1, h2两类元素的并集
.card acard 内任意层级的 a 后代
.card > acard 的直接 a 子元素
h2 + p紧邻 h2 后面的同级 p
h2 ~ ph2 后面所有同级 p

属性​

选择器含义
[disabled]存在该属性
[type="text"]属性值完全相同
[class~="card"]空白分隔的属性标记中包含 card
[lang|="zh"]值是 zh 或以 zh- 开头
[href^="https://"]属性值以指定内容开头
[href$=".pdf"]属性值以指定内容结尾
[href*="docs"]属性值包含指定片段
[type="TEXT" i]ASCII 范围内忽略大小写匹配

结构、状态和伪元素​

选择器含义
li:first-child / li:last-child是父元素首个 / 末个子元素的 li
p:nth-of-type(2)同级 p 中第 2 个
li:nth-child(2n)位于偶数子元素位置的 li
:checked / :disabled已选中 / 已禁用控件
:hover / :active指针悬停 / 激活状态
:focus / :focus-visible已聚焦 / 浏览器认为需要显示焦点指示
:focus-within自己或后代获得焦点
::before / ::after元素内容前后的生成内容
::placeholder / ::selection占位文本 / 被选中的文本部分

::before、::after 通常要设置 content 才会生成内容;键盘焦点不能只依靠 hover 样式表达。

函数式选择器​

:is(h1, h2, h3) > code { font-size: 0.9em; }
:where(.article) a { text-decoration: underline; }
li:not(.done) { font-weight: bold; }
article:has(> img) { padding-top: 1rem; }

:is() 匹配列表中任一项,:not() 排除匹配,:has() 按相对选择器是否能匹配来选择当前元素。旧浏览器环境需核对支持情况。

优先级​

在其他层叠条件相同的情况下,按 ID、类/属性/伪类、元素/伪元素 三列从左到右比较:

选择器优先级
#main .item a1-1-1
.menu .item a0-2-1
:where(#main) a0-0-1

通配符、组合符不增加优先级;:where() 连同参数的优先级为零。:is()、:not()、:has() 取参数列表中最高的优先级。不能仅凭「写在后面」或「有 ID」忽略 !important、层叠层和样式来源。

来源与许可​

本页由 Jacob’s Wiki 于 2026-11-05 对 IT-Tools 原文作中文摘译、重组和补充,保留常用操作,并非逐行全译。原文归 IT-Tools 项目贡献者所有。

本页译文与改编内容按 GNU GPL 3.0 提供,不附带担保;本站 Markdown 源码可用于修改和再分发。

返回开发运维速查目录