css选择器作为网页中我们用来选中样式添加样式的一样利器,掌握好它无疑是我们能够在开发中顺心顺手的前提。这里汇总了CSS和CSS3的选择器,这里有些选择器你可能不常用,但是过一眼还是很有必要的,大家共勉!
一、基本选择器
选择器 | 含义 |
---|---|
* | 类似于正则的*,匹配任何元素 |
E | 标签选择器,匹配所有标签名为E的元素 |
.className | 类选择器,匹配标签中含有class=”className”的属性 |
#idName | id选择器,匹配标签中含有id=”idName”的属性 |
class和id的区别即多和一的区别,希望大家自己查阅资料,。
EXP:
二、组合选择器
选择器 | 含义 |
---|---|
E1,E2 | 多元素选择器,同时匹配所有标签名为E1和E2的元素,以逗号分割 |
E1 E2 | 后代元素选择器,匹配所有E1元素中的E2元素,以空格作为标识 |
E1 > E2 | 子元素选择器,匹配所有E1元素子元素中E2 |
E1 + E2 | 邻居选择器,匹配所有与E元素同级且在紧邻其后的元素E2 |
EXP:
三、CSS2.1属性选择器
选择器 | 含义 | |
---|---|---|
E[attr] | 匹配所有具有attr属性的E元素,不考虑它的值(ps:E可以省略,如’[selected],下同’) | |
E[attr=val] | 匹配所有属性attr值等于val的元素E | |
E[attr~=val] | 匹配所有attr属性具有多个空格分割的值,其中一个值等于”val”的E元素 | |
E[attr | =val] | 匹配所有attr属性具有多个连字号分割的值,其中一个值以”val”开头的E元素,主要用于lang的属性,比如”en”、”en-us” |
EXP:
四、css2.1中的伪类
选择器 | 含义 |
---|---|
E:first-child | 匹配父元素E的第一个子元素 |
E:link | 匹配所有未被点击链接的E元素 |
E:visited | 匹配所有已被点击链接的E元素 |
E:active | 匹配鼠标已经按下还没释放的E元素 |
E:hover | 匹配鼠标悬停的E元素 |
E:focus | 匹配获得当前焦点的E元素 |
E:lang(c) | 匹配lang属性等于c的E元素 |
EXP:
五、CSS2.1中的伪元素
选择器 | 含义 |
---|---|
E:first-line | 匹配E元素的第一行 |
E:first-letter | 匹配E元素的第一个字母 |
E:before | 在E元素之前插入生成的内容 |
E:after | 在E元素之后插入生成的内容 |
下一篇博客会说到三角形的生成以及before和after的应用
EXP:
六、CSS3的同级元素通用选择器
选择器 | 含义 |
---|---|
E1~E2 | 匹配E1元素之后的同级E2元素 |
EXP:
七、CSS3属性选择器
选择器 | 含义 |
---|---|
E[attr^=”val”] | 匹配属性attr的值以“val”开头的元素 |
E[attr$=”val”] | 匹配属性attr的值以”val“结尾的元素 |
E[attr*=”val”] | 匹配属性attr值中包含“val”的元素 |
EXP:
八、CSS3中与用户界面有关的伪类
选择器 | 含义 |
---|---|
E:enabled | 匹配表单中激活的元素 |
E:disabled | 匹配表单中被禁用的元素 |
E:checked | 匹配表单中被选中的radio或checkbox元素 |
E::selection | 匹配用户当前选择的元素 |
EXP:
九、CSS3中的结构性伪类
选择器 | 含义 |
---|---|
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: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 | 匹配一个不包含任何子元素的元素,ps:文本节点也被看做子元素 |
EXP:
十、CSS3的反选伪类
选择器 | 含义 |
---|---|
E:not(s) | 匹配不符合当前选择器的任何元素 |
EXP:
十一、CSS3中的target伪类
选择器 | 含义 |
---|---|
E:target | 匹配文档中特定”id”点击后的效果 |
更多信息请参照W3C进行阅读,关于伪类的知识点就介绍到这里了!
选择器优先级
页面中我们可能对一个元素应用了多个样式,那它到底会应用那个样式呢,这涉及到了优先级,下面就补充下关于选择器的优先级问题。
选择器的特殊性分为4个权重值,a b c d,值分别为1000,100,10,1,从左到右,越左边的越优先。
- HTML内样式,那么特殊性最优先,权重为1000
- id选择器的特殊性是b,权重为100
- 类选择器、伪类选择器、属性选择器为c,权重为10
- 标签选择器、伪元素选择器为d,权重为1
ps:
- 比较的过程就是将权重相加,大者优先级高
- 结果相同的情况下,后定义的样式会覆盖前面的
- 样式中含有!important,则该样式或者该属性优先级最高,无视其他样式,即使是内联样式。
!important特殊性
|
|
第二个样式优先于第一个样式,即使id选择器优先级高于类选择器
这种情况带!important的属性优先级高,但是在IE6这样会显示为红色,是因为IE6的一点小bug,通过书写格式可以避免,可以参考这篇博文。