参考链接

MDN: 选择器参考表

阮一峰网络日志:CSS选择器笔记

CSS选择器

基本选择器

选择器 含义
* 通配选择器,匹配任何元素,配合其他选择器时不起效果
E 标签选择器,匹配所有使用E标签的元素
.info 类选择器,匹配所有class属性中包含info的元素
#footer ID选择器,匹配所有id属性等于footer的元素

优先级:id 选择器 > class 选择器 > 标签选择器 > 通配选择器

层次选择器

选择器 含义
E, F 多元素选择器,同时匹配所有E元素或F元素,E和F之间用逗号分隔
E F 后代选择器,匹配所有属于E元素后代的F元素,所有后代
E > F 子元素选择器,匹配所有E元素的子元素F,直接后代
E + F 相邻兄弟选择器,匹配所有紧随E元素之后的同级元素F(同一个父元素中)
E~F 通用兄弟选择器,匹配所有E元素之后的同级元素F

属性选择器

选择器 含义
E[att] 匹配所有具有att属性的E元素,不考虑它的值。
E[att=val] 匹配所有存在att属性且属性值等于”val”的E元素
E[att~=val] 匹配所有att属性具有多个空格分隔的值、至少一个值等于”val”的E元素
E[att|=val] 匹配所有att属性具有多个连字号分隔(hyphen-separated)的值、其中一个值以”val”开头的E元素,主要用于lang属性,比如”en”、”en-us”、”en-gb”等等
E[att^=val] 匹配所有存在att属性且属性值以”val”开头的E元素
E[att$=val] 匹配所有存在att属性且属性值以”val”结尾的E元素
E[att*=val] 匹配所有存在att属性且属性值包含”val”的E元素
[att operator value i] 在属性选择器的右方括号前添加一个用空格隔开的字母 i(或 I),
可以在匹配属性值时忽略大小写(支持 ASCII 字符范围之内的字母)。

伪元素选择器

选择器 含义
E::first-line 匹配E元素的第一行(块级元素E)
E::first-letter 匹配E元素的第一行第一个字母(块级元素E)
E::before E元素之前插入生成的内容
E::after E元素之后插入生成的内容
E::selection 匹配用户当前选中的元素

一个选择器中只能使用一个伪元素。伪元素必须紧跟在语句中的简单选择器/基础选择器之后。

注意:按照规范,应该使用双冒号(**::**)而不是单个冒号(**:**,以便区分伪类和伪元素。但是,由于旧版本的 W3C 规范并未对此进行特别区分,因此目前绝大多数的浏览器都同时支持使用这两种方式来表示伪元素。

伪类选择器

选择器 含义
E:link 匹配所有未被点击的链接
E:visited 匹配所有已被点击的链接
E:active 匹配鼠标已经在其上按下、还没有释放的E元素
E:hover 匹配鼠标悬停其上的E元素
E:focus 匹配获得当前焦点的E元素
E:focus-within 匹配获得当前焦点或后代元素获得较焦点的E元素
E:lang(c) 匹配lang属性等于c的E元素
E:enabled 匹配表单中激活的元素
E:disabled 匹配表单中禁用的元素
E:checked 匹配表单中被选中的 radio(单选框)或 checkbox(复选框)元素

结构伪类选择器

选择器 含义
E:root 匹配文档的根元素,对于HTML文档,就是HTML元素
E:nth-child(n) 匹配其父元素的第n个子元素,第一个编号为1,且为当前元素类型才生效
E:nth-last-child(n) 匹配其父元素的倒数第n个子元素,第一个编号为1
E:nth-of-type(n) :nth-child() 作用类似,但是仅匹配使用同种标签的元素
E:nth-last-of-type(n) :nth-last-child() 作用类似,但是仅匹配使用同种标签的元素
E:first-child 匹配父元素的第一个子元素,等同于:nth-child(1)
E:last-child 匹配父元素的最后一个子元素,等同于:nth-last-child(1)
E:first-of-type 匹配父元素下使用同种标签的第一个子元素,等同于:nth-of-type(1)
E:last-of-type 匹配父元素下使用同种标签的最后一个子元素,等同于:nth-last-of-type(1)
E:only-child 匹配父元素下仅有的一个子元素
等同于:first-child:last-child或 :nth-child(1):nth-last-child(1)
E:only-of-type 匹配父元素下使用同种标签的唯一一个子元素
等同于:first-of-type:last-of-type或 :nth-of-type(1):nth-last-of-type(1)
E:empty 匹配一个不包含任何子元素的元素,注意,文本节点(包括空格)被看作子元素

反选伪类

选择器 含义
E:not(s) 匹配不符合当前选择器的任何元素

:target 伪类

选择器 含义
E:target 匹配文档中特定”id”点击后的效果