一般的有:元素选择器,id选择器,class选择器,并集选择器,交集选择器,通配选择器。
其他选择器:
1、后代元素选择器:祖先元素 后代元素(以空格隔开)
2、子元素选择器:祖先元素 > 后代元素
ie6不支持子元素选择器
3、伪类选择器:
伪类:表示元素的一种特殊状态。
以超链接为例:
伪类 | 语义 |
---|---|
:link | 普通超链接,即未访问过的超链接 |
:visited | 访问过的链接 |
:hover | 鼠标移入的状态 |
:active | 被激活、点击的状态 |
:hover和:active可以应用于其他的元素,ie6不支持它们应用于出超链接以外的元素。
伪类 | 语义 |
---|---|
::selected | 表示被选中的状态,如一段文字被选中 |
::selected支持大部分浏览器,firefox需使用::-moz-selected伪类。
4、伪元素选择器:
使用伪元素表示元素中的一些特殊位置。
伪元素 | 语义 |
---|---|
:first-letter | 第一个字符 |
:first-line | 第一行 |
:before | 元素最前边的部分 |
:after | 元素最后边的部分 |
一般,:before和:after都结合content这个样式一起使用,通过content可以向before和after的位置添加一些内容。
5、属性选择器:
伪元素 | 语义 |
---|---|
元素[属性] | 用指定属性的元素 |
元素[属性=“属性值”] | 属性等于指定值 |
元素[属性^=“属性值”] | 属性以指定值开头 |
元素[属性$=“属性值”] | 属性值以指定值结尾 |
元素[属性*=“属性值”] | 属性值包含指定值 |
6、子元素伪类:
伪类 | 语义 |
---|---|
:first-child | 是父元素的第一个子元素 |
:last-child | 是父元素的最后一个子元素 |
:nth-child(?) | 是父元素的第n个子元素 |
:first-of-type | 是其父元素的所有同类子元素的第一个 |
:last-of-type | 是其父元素的所有同类子元素的最后一个 |
:nth-of-type() | 指定其父元素的同类子元素的任意一个 |
:nth-child,:nth-of-type后面可以跟一个参数。若为even,表示偶数,若为odd,表示基数位置的元素。
7、兄弟元素选择器
选择器 | 语义 |
---|---|
元素1 + 元素2 | 选择一个元素后紧挨着的指定的兄弟元素 |
元素1 ~ 元素2 | 选择一个元素后所有的指定的兄弟元素 |
8、否定伪类
伪类 | 语义 |
---|---|
元素:not(选择器) | 去除某些元素,如p:not(.hello)选择所有p元素,除了class值为hello的p元素 |
9、选择器的优先级
当多个选择器选择了同一个元素并且设置相同的样式时,这时样式之间就产生了冲突,最终到底采用哪个选择器定义的样式,取决于选择器的优先级,优先级高德优先显示。
选择器 | 优先级 |
---|---|
内联样式 | 1000 |
id选择器 | 100 |
class选择器 | 10 |
元素选择器 | 1 |
通配* | 0 |
继承的样式 | 没有优先级 |
当交集选择器中包含多个选择器时,需要将多种选择器的优先级相加再比较。但是,选择器优先级的计算不会超过它的最大的数量级,如11个class选择器相加也不会超过id选择器。如果选择器的优先级一样,则优先使用靠后的样式。
并集选择器的优先级是单独计算的。
可以在样式的最后,添加!important,此时样式会获得最高的优先级,优先于所有样式甚至是内联样式,但是,应尽量避免使用!important。