CSS 选择器速查

基本选择器

选择器示例说明
**通配符,匹配所有元素
Ediv元素选择器,匹配所有指定类型的元素
.class.container类选择器,匹配所有包含指定 class 的元素
#id#headerID 选择器,匹配具有指定 ID 的唯一元素
E, Fh1, h2分组选择器,匹配 E 或 F 任一元素

组合选择器

选择器示例说明
E Fdiv p后代选择器,匹配 E 元素内所有的 F 后代元素(含子、孙等)
E > Ful > li子元素选择器,仅匹配 E 的直接子元素 F
E + Fh1 + p相邻兄弟选择器,匹配紧跟在 E 后面的第一个兄弟元素 F
E ~ Fh1 ~ p通用兄弟选择器,匹配 E 后面所有的兄弟元素 F

属性选择器

选择器示例说明
[attr][disabled]匹配具有该属性的元素
[attr=val][type="text"]匹配属性值完全等于 val 的元素
[attr~=val][class~="btn"]匹配属性值中包含独立单词 val 的元素
[attr|=val][lang|="zh"]匹配属性值等于 val 或以 val- 开头的元素
[attr^=val][href^="https"]匹配属性值以 val 开头的元素
[attr$=val][href$=".pdf"]匹配属性值以 val 结尾的元素
[attr*=val][class*="card"]匹配属性值包含 val 子串的元素
[attr=val i][type="text" i]属性值匹配时忽略大小写

伪类选择器

选择器示例说明
:linka:link未访问过的链接
:visiteda:visited已访问过的链接
:hovera:hover鼠标悬停时
:activebutton:active元素被激活(鼠标按下)时
:focusinput:focus获得焦点时
:focus-withinform:focus-within自身或后代元素获得焦点时
:focus-visibleinput:focus-visible获得焦点且浏览器认为应显示焦点指示器时
:first-childli:first-child父元素的第一个子元素
:last-childli:last-child父元素的最后一个子元素
:nth-child(n)li:nth-child(2)父元素的第 n 个子元素(n 从 1 开始)
: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 个
:nth-last-of-type(n)p:nth-last-of-type(2)同类型元素中的倒数第 n 个
:only-childspan:only-child父元素的唯一子元素
:only-of-typespan:only-of-type父元素中同类型的唯一子元素
:not(s):not(.hidden)否定伪类,匹配不符合选择器 s 的元素
:is(s):is(h1, h2, h3)匹配选择器列表中任一元素的简化语法
:where(s):where(h1, h2)同 :is(),但优先级始终为 0
:has(s)a:has(img)包含指定子元素的元素
:emptydiv:empty没有任何子节点(含文本节点)的空元素
:root:root文档的根元素(HTML 中为 <html>)
:checkedinput:checked被选中的表单控件(checkbox/radio)
:disabledinput:disabled被禁用的表单元素
:enabledinput:enabled未被禁用的表单元素
:requiredinput:required设置了 required 属性的表单元素
:optionalinput:optional未设置 required 的表单元素
:validinput:valid通过表单验证的元素
:invalidinput:invalid未通过表单验证的元素
:placeholder-showninput:placeholder-shown显示占位符文本的表单元素
:target:targetURL 哈希指向的元素(锚点目标)
:lang(lang)p:lang(zh)指定语言的元素

伪元素选择器

选择器示例说明
::beforep::before在元素内容前插入生成内容
::afterp::after在元素内容后插入生成内容
::first-linep::first-line元素内容的第一行
::first-letterp::first-letter元素内容的第一个字母
::selection::selection用户选中的文本内容
::placeholderinput::placeholder表单元素的占位符文本
::markerli::marker列表项的标记符号(圆点/数字等)
::backdropdialog::backdrop对话框元素后面的背景遮罩

常用组合示例

选择器示例说明
E F Gul li a嵌套后代:ul 内 li 内的所有 a 标签
E > F > Gul > li > a直接子元素链式:ul 直接子 li 的直接子 a
E.classdiv.container匹配具有指定 class 的特定类型元素
E#idform#login匹配具有指定 ID 的特定类型元素
E.class#iddiv.card#main类型 + class + ID 组合匹配
E[attr=val]:hovera[href]:hover属性选择器 + 伪类组合
E:nth-child(odd)tr:nth-child(odd)奇数行(等价于 2n+1)
E:nth-child(even)tr:nth-child(even)偶数行(等价于 2n)
E:nth-child(3n+1)li:nth-child(3n+1)每 3 个中的第 1 个(1, 4, 7, ...)
E:is(A, B, C):is(section, article) h1section 或 article 内的 h1

选择器优先级

类型权重值示例
行内样式1,0,0,0style="..."
ID 选择器0,1,0,0#header
类/属性/伪类0,0,1,0.active, [type="text"], :hover
元素/伪元素0,0,0,1div, ::before
通配符0,0,0,0*