CSS选择器是学习CSS以及Web编程的基础。但是总有不少人会对一些选择器的概念似懂非懂,用的不熟。
好消息是这篇文章整理了你可能会用到的几乎所有CSS选择器。
废话不多说,直接上干货。
基本选择器
|
|
组合选择器
|
|
属性选择器
|
|
E[attr ~= value]
和E[attr *= value]
的区别
以下面代码为例
|
|
p[class~="first"]
和p[class~="active"]
可以选中上面的P元素,也只有这两种~=
方法能选中,因为这是以识别空格来判定value值的,以空格分开的就是单个完整的value值,value值不能包含空格;p[class*="fir"]
和p[class*="first "]
和p[class*="first a"]
和p[class*="first active"]
都可以选中P元素,*=
是以字符串识别属性值,所以任何一种按顺序打断属性值的value都可以匹配该元素。
总结一句话就是,可以认为E[attr *= value]
是E[attr ~= value]
的超集。
伪类选择器
伪类中像 E:something 这种形式,可以这样理解,首先选择器是E元素,这是大前提,然后something是限定范围的。
这样理解就可以避免进入误区。
结构化相关
1234567891011121314E:first-child /*匹配E的父元素的第一个子元素且必须为E元素*/E:last-child /*匹配E的父元素的最后一个子元素且必须为E元素*/E:nth-child(3) /*匹配E的父元素的第3(值可以取正整数)个子元素且必须为E元素*/E:nth-last-child(2) /*匹配E的父元素的倒数第2个子元素且必须为E元素*/E:only-child /*匹配没有兄弟元素的E元素,即父元素下只有其一个子元素*/E:nth-of-type(2) /*匹配E的父元素的第2(值可以取正整数)个和E同类型的子元素*/E:nth-last-of-type(3) /*匹配E的父元素的倒数第3个和E同类型的子元素*/E:first-of-type /*匹配E的父元素的第1个和E同类型的子元素,等同于E:nth-of-type(1)*/E:last-of-type /*匹配E的父元素的最后1个和E同类型的子元素,等同于:nth-last-of-type(1)*/E:only-of-type /*匹配其父元素下唯一一个E同种类型的子元素*/E:empty /*匹配一个不包含任何子元素的元素,文本节点也被看作子元素*/html:root /*匹配文档的根元素,对于HTML文档,就是HTML元素,也可以写成:root*/状态相关
12345678910E:link /* 匹配所有未被访问过的链接(不是指未被点击,其有可能是之前被访问过但没有被点击过)*/E:visited /*匹配所有已被访问过的链接*/E:hover /*匹配鼠标悬停其上的E元素*/E:active /*匹配鼠标已经其上按下、还没松开的E元素*/E:focus /*匹配获得当前焦点的E元素*/E:blur /*匹配失去当前焦点的E元素*/a:link, a:hover, a:active, a:visited 的顺序顺序依次是a:link >> a:visited >> a:hover >> a:active表单相关
123E:enabled /*匹配表单中可启用的E元素,一个元素能被激活(如选择、点击或接受文本输入)或获取焦点,则是启用的*/E:disabled /*匹配表单中禁用的E元素,在被禁用时,元素不能被激活或获取焦点*/E:checked /*匹配表单中被选中的radio或checkbox元素*/其他
123E::selection /* 该伪元素作用于E元素下文档被选中时的样式*/E:lang(c) /* 匹配lang属性等于c的E元素*/E:not(selector) /*匹配E的父元素下不匹配selector选择器的E元素*/
伪元素选择器
以下四个伪元素选择器也可以用单冒号,效果一样
|
|
hover选择器
|
|
nth-child选择器
CSS选择器中n表示非负整数(0,1,2,3,4…)
|
|
nth-last-child选择器同上