元素选择器
通配选择器
* { sRules }
选定文档所有的元素
1 | /** 设置所有元素为红色 **/ |
1 | <div>我是div</div> |
类型选择器
E { sRules }
选定指定的文档元素 E
1 | /** 设置元素p为红色 **/ |
1 | <p>我是p</p> |
类选择器
E.myclass { sRules }
选定 class 属性包含 myclass 的文档元素 E
1 | /** 设置 calss="myclass" 的元素为红色 **/ |
1 | <div class="myclass">我是div</div> |
多类选择器
E.myclass.myotherclass { sRules }
选定 class 属性包含 myclass 以及 myotherclass 的文档元素 E
1 | /** 设置 calss="myclass myotherclass" 的元素为红色 **/ |
1 | <div class="myclass myotherclass">我是div</div> |
ID选择器
E#myid { sRules }
选定 id 属性值为 myid 的文档元素 E
1 | /** 设置 id="myid" 的元素为红色 **/ |
1 | <div id="myid">我是div</div> |
属性选择器
根据简单属性选择
E[attr] { sRules }
选定具有属性 attr 的文档元素 E
1 | /** 设置有属性 id 的元素为红色 **/ |
1 | <div id="myid">我是div</div> |
根据具体属性值选择
E[attr=”val”] { sRules }
选定具有属性 attr 且属性值等于 val 的文档元素 E
1 | /** 设置有属性 id 且值等于 "myid" 的元素为红色 **/ |
1 | <div id="myid">我是div</div> |
根据部分属性值选择
E[attr~=”val”] { sRules }
选定具有属性 attr 且属性值为用空格分隔的字词列表,其中有一个等于 val (包含只有一个值且该值等于 val 的情况)的文档元素 E
1 | /** 设置 class 属性有一个值为 div1 的元素为红色 **/ |
1 | <div calss="div1">我是div</div> |
E[attr^=”val”] { sRules }
选定具有属性 attr 且属性值以 val 开头的字符串的文档元素 E
1 | /** 设置 class 属性的值以 head 开头的元素为红色 **/ |
1 | <div calss="headClass">我是div</div> |
E[attr$=”val”] { sRules }
选定具有属性 attr 且属性值以 val 结尾的字符串的文档元素 E
1 | /** 设置 class 属性的值以 Class 结尾的元素为红色 **/ |
1 | <div calss="headClass">我是div</div> |
E[attr*=”val”] { sRules }
选定具有属性 attr 且属性值包含 val 的字符串的文档元素 E
1 | /** 设置 class 属性的值包含 Div 的元素为红色 **/ |
1 | <div calss="headDivClass">我是div</div> |
E[attr|=”val”] { sRules }
选定具有属性 attr 且属性值以 val 开头并用连接符 “-“ 分隔的字符串(包含属性值只有 val 的情况)的文档元素 E
1 | /** 设置 class 属性的值以 head 开头并用连接符 "-" 分隔的元素为红色 **/ |
1 | <div calss="head-class">我是div</div> |
关系选择器
后代选择器
E F { sRules }
选定文档元素 E 所有的后代元素 F,包含所有子孙
1 | /* 设置 div 后代所有的 p 为红色 */ |
1 | <div> |
子代选择器
E>F { sRules }
选定文档元素 E 所有的子代元素 F,不包含孙代元素
1 | /* 设置 div 子代的 p 为红色,但孙代的 p 不为红色 */ |
1 | <div> |
相邻选择器
E+F { sRules }
选定文档元素 E 之后且同属一个父元素的相邻兄弟元素 F
1 | /* 设置 h1 相邻的 p 为红色,但第二个 p 不为红色 */ |
1 | <div> |
兄弟选择器
E~F { sRules } CSS3
选定文档元素 E 之后且同属一个父元素的兄弟元素 F
1 | /* 设置 h1 之后所有的 p 为红色 */ |
1 | <div> |
伪类选择器
:link
a:link { sRules }
设置超链接 a 未被访问前的样式
1 | a:link { |
1 | <a href="http://i.cnblogs.com"></a> |
:visited
a:visited { sRules }
设置超链接 a 已经被访问后的样式
1 | a:link { |
1 | <a href="http://i.cnblogs.com"></a> |
:focus
E:focus { sRules }
设置元素 E 在成为输入焦点(该元素的 onfocus 事件发生)时的样式
1 | a:focus { |
1 | <a href="http://i.cnblogs.com"></a> |
:hover
E:hover { sRules }
设置元素E在鼠标悬停时的样式
1 | a:hover { |
1 | <a href="http://i.cnblogs.com"></a> |
:active
E:active { sRules }
设置元素E在被用户激活(在鼠标点击与释放之间发生的事件)时的样式
1 | a:active{ |
1 | <a href="http://i.cnblogs.com"></a> |
以上五种伪类选择器同时用在a超链接时,各伪类需按特定的顺序书写才能生效,保证各浏览器具有相同的表现。正确的顺序为:link - visited - focus - hover - active
:lang(lang)
E:lang(lang) { sRules }
选定使用特殊语言的元素E
1 | p:lang(zh-cn) { |
1 | <p lang="zh-cn">我是中文</p> |
:not(s) CSS3
E:not(s) { sRules }
匹配不含有s选择符的元素E
1 | /** 除最后一个li之外,所有li加一条底边线 **/ |
1 | <ul> |
:root CSS3
:root { sRules }
匹配当前文档的根元素。在HTML中,根元素永远是HTML
1 | /** :root 相当于 html **/ |
:first-child
E:first-child { sRules }
匹配父元素的第一个子元素 E。要使该属性生效,E 元素必须是某个元素的子元素,E 的父元素最高是 body,即 E 可以是 body 的子元素
最重要的是: E 必须是它的兄弟元素中的第一个元素,换言之,E 必须是父元素的第一个子元素。与之类似的伪类还有 E:last-child,只不过情况正好相反,需要它是最后一个子元素。
1 | /** 给第一个 li 加一条底边线 **/ |
1 | <ul> |
:last-child CSS3
E:last-child { sRules }
匹配父元素的最后一个子元素E。要使该属性生效,E 元素必须是某个元素的子元素,E 的父元素最高是 body,即 E 可以是 body 的子元素
最重要的是: E 必须是它的兄弟元素中的最后一个元素,换言之,E 必须是父元素的最后一个子元素。与之类似的伪类还有 E:first-child,只不过情况正好相反,需要它是第一个子元素。
1 | /** 给最后一个 li 加一条底边线 **/ |
1 | <ul> |
:only-child CSS3
E:only-child { sRules }
匹配父元素仅有的一个子元素 E。要使该属性生效,E 元素必须是某个元素的子元素,E 的父元素最高是 body,即 E 可以是 body 的子元素
1 | /** 该规则当元素中只有一个 li 有效,即可设置 li 为红色,如果有多个 li 则无效。**/ |
1 | <ul> |
:nth-child(n) CSS3
E:nth-child(n) { sRules }
要使该属性生效,E 元素必须是某个元素的子元素,E 的父元素最高是 body,即 E 可以是 body 的子元素
匹配父元素的第 n 个子元素 E,假设该子元素不是 E,则选择符无效,但 n 会累加
1 |
|
该选择符允许使用一个 乘法因子(n) 来作为换算方式,比如我们想选中所有的偶数子元素 E,那么选择符可以写成:E:nth-child(2n),也可以使用一些关键字,比如:odd, even。E:nth-child(even) 选择偶数子元素,E:nth-child(old) 选择奇数子元素
1 | <style> |
:nth-last-child(n) CSS3
E:nth-last-child(n) { sRules }
要使该属性生效,E元素必须是某个元素的子元素,E的父元素最高是body,即E可以是body的子元素
该选择符允许使用一个乘法因子(n)来作为换算方式,比如我们想选中倒数第一个子元素E,那么选择符可以写成:E:nth-last-child(1)
匹配父元素的倒数第n个子元素E,假设该子元素不是E,则选择符无效
1 | <style> |
:first-of-type CSS3
E:first-of-type { sRules }
匹配同类型中的第一个同级兄弟元素E
要使该属性生效,E元素必须是某个元素的子元素,E的父元素最高是html,即E可以是html的子元素,也就是说E可以是body
该选择符总是能命中父元素的第1个为E的子元素,不论第1个子元素是否为E
1 | <style> |
:last-of-type CSS3
E:last-of-type { sRules }
匹配同类型中的最后一个同级兄弟元素E
要使该属性生效,E元素必须是某个元素的子元素,E的父元素最高是html,即E可以是html的子元素,也就是说E可以是body
该选择符总是能命中父元素的倒数第1个为E的子元素,不论倒是第1个子元素是否为E
1 | <style> |
:only-of-type CSS3
E:only-of-type { sRules }
匹配同类型中的唯一的一个同级兄弟元素E
要使该属性生效,E元素必须是某个元素的子元素,E的父元素最高是html,即E可以是html的子元素,也就是说E可以是body
该选择符总是能命中父元素的唯一同类型子元素E,不论该元素的位置
1 | <style> |
:nth-of-type(n) CSS3
E:nth-of-type(n) { sRules }
匹配同类型中的第n个同级兄弟元素E
要使该属性生效,E元素必须是某个元素的子元素,E的父元素最高是html,即E可以是html的子元素,也就是说E可以是body
该选择符总是能命中父元素的第n个为E的子元素,不论第n个子元素是否为E
1 | <style> |
:nth-last-of-type(n) CSS3
E:nth-last-of-type(n) { sRules }
匹配同类型中的倒数第n个同级兄弟元素E
要使该属性生效,E元素必须是某个元素的子元素,E的父元素最高是html,即E可以是html的子元素,也就是说E可以是body
该选择符总是能命中父元素的倒数第n个为E的子元素,不论倒数第n个子元素是否为E
1 | <style> |
:empty CSS3
E:empty { sRules }
匹配没有任何子元素(包括text节点)的元素E
1 | <style> |
:checked CSS3
E:checked { sRules }
匹配用户界面上处于选中状态的元素E。(用于input type为radio与checkbox时)
1 | <style> |
:enabled CSS3
E:enabled { sRules }
匹配用户界面上处于可用状态的元素E
1 | <style> |
:disabled CSS3
E:disabled { sRules }
匹配用户界面上处于禁用状态的元素E
1 | <style> |
:target CSS3
E:target { sRules }
匹配相关URL指向的E元素
解释: URL后面跟锚点#,指向文档内某个具体的元素。这个被链接的元素就是目标元素(target element),:target选择器用于选取当前活动的目标元素
1 | <!-- 假设上述代码在页面 a.html 中,那么当访问 a.html#demo 时,这个div元素将会被:target命中 --> |
@page相关选择器
@page :first { sRules }
设置在打印时页面容器第一页使用的样式。仅用于@page规则
该伪类选择符只允许定义margin, orphans, widows 和 page breaks相关属性
@page :left { sRules }
设置页面容器位于装订线左边的所有页面使用的样式。仅用于@page规则
该伪类选择符只允许定义margin, padding, border 和 background属性
@page :right { sRules }
设置页面容器位于装订线右边的所有页面使用的样式。仅用于@page规则
该伪类选择符只允许定义margin, padding, border 和 background属性
伪对象选择器
::first-letter CSS3
E::first-letter { sRules }
设置对象内的第一个字符的样式
此伪对象仅作用于块对象。内联对象要使用该伪对象,必须先将其设置为块级对象
该伪对象常被用来配合font-size属性和float属性制作首字下沉效果
1 | <style> |
::first-line CSS3
E::first-line { sRules }
设置对象内的第一行的样式
此伪对象仅作用于块对象。内联对象要使用该伪对象,必须先将其设置为块级对象
1 | <style> |
::before CSS3
E::before { sRules }
设置在对象前(依据对象树的逻辑结构)发生的内容。用来和content属性一起使用,并且必须定义content属性
1 | <style> |
::after CSS3
E::after { sRules }
设置在对象前(依据对象树的逻辑结构)发生的内容。用来和content属性一起使用,并且必须定义content属性
1 | <style> |
::placeholder CSS3
E::placeholder { sRules }
设置对象文字占位符的样式。
::placeholder 伪元素用于控制表单输入框占位符的外观,它允许开发者/设计师改变文字占位符的样式,默认的文字占位符为浅灰色。
当表单背景色为类似的颜色时它可能效果并不是很明显,那么就可以使用这个伪元素来改变文字占位符的颜色。
需要注意的是,除了Firefox是 ::[prefix]placeholder,其他浏览器都是使用 ::[prefix]input-placeholder
1 | <style> |
::selection CSS3
E::selection { sRules }
设置对象被选择时的样式。
需要注意的是,::selection只能定义被选择时的background-color,color及text-shadow
1 | <style> |