首先,快速浏览一下css3中新增的选择符: CSS3选择符语法概览:
如果对上面的描述还不是很清楚的,请不要担心。本文下面的部分将会对他们进行更加详细的讲解,并且提供例子来演示他们是怎么使用的。 子串匹配的属性选择符 这一组的选择符都新加的,他允许开发者对属性中的子字符串来进行匹配。 假设HTML文档中包含下面的代码结构: <div id="nav-primary"></div> 通过使用子串匹配的属性选择符就可以找到文档中这些结构性的特定组合。 下面的规则将为id以“nav”开头的div元素设定背景颜色: div[id^="nav"] { background:#ff0; } 上例中选择符会匹配div#nav-primary和div#nav-secondary。 要找到id以primary结尾的div元素,可以使用下面的规则: div[id$="primary"] { background:#ff0; } 这时选择符将匹配div#nav-primary和div#content-primary。 下面的规则将会匹配到id中含有content子字符串的的div中: div[id*="content"] { background:#ff0; } 受影响的元素有:div#content-primary、div#content-secondary和div#tertiary-content。 子串匹配的属性选择符已经在最新版本的Mozilla、Firefox、Flock、Camino、Safari、OmniWeb以及Opera中可以使用,但是如果IE中还不支持的话,我们最好还是先不要使用他们(作者在写这篇文章时IE还在开发中,如今IE7、IE8都支持这些选择符,dudo注)。 目标伪类 含有识别标识的url(一个#后面紧跟锚点名称或者元素的id)指向的是文档中的特定元素。链向其他目标元素的这些元素就可以使用:target伪类来修饰它。如果当前的URL中没有任何的片断识别标识,:target伪类将不会匹配任何元素。 还是以上面提到的代码结构为例,如果URL中包含content-primary标识时,现在的规则将会在他外围增加一个边框: div#content-primary:target { outline:1px solid #300; } URL是类似这样的形式的: UI元素状态伪类 :ENABLED伪类和:DISABLED伪类 input[type="text"]:enabled { background:#ffc; } :CHECKED伪类 input:checked { border:1px solid #090; } UI元素状态伪类目前可以在Opera和基于Mozilla的浏览器中使用。 要注意的是,许多浏览器对于开发者对表单控件样式的改变有着严格的限制。更多关于这方便的内容可以我的两篇文章:《样式化表单控件》和《样式化更多表单控件》。 结构性伪类 结构性伪类允许开发者根据文档树中表明的结构来指定元素,而这些使用简单选择符或者是混合选择符都无法做到。结构性伪类功能十分强大,但是不幸的是现代浏览器仅提供了有限的支持。 :ROOT伪类 :root { background:#ff0; } :NTH-CHILD()伪类 :nth-child()伪类指向的元素在文档树中有一定数量的兄弟元素存在。其中括号内的参数,可以是一个数字,也可以一个关键字或者一个公式。 p:nth-child(3) { color:#f00; } 关键字odd(奇数)和even(偶数)可以用来匹配序号为奇数或者是偶数的子元素。第一个元素的序号为1,因为下面的规则将会匹配第1、3、5...了子元素p: p:nth-child(odd) { color:#f00; } 下面的规则则匹配第2、4、6...个字元素p: p:nth-child(even) { color:#f00; } 表达式an+b可以用来创建更加复杂的循环模式。在表达式中,a代表步长,n是一个从0开始的计数器,b代表偏移量。其中,所有的数值都必须是整数(这里,n是从0开始的,和js等中的循环不同的是,至于到多少结束取决于元素的个数决定,如文档中有20个元素,3n(n=1,2...)就会分别选择第3、6、9、...18个元素,n此时为6 ,dudo注)。为了更好理解如何使用表达式我们先看几个代码实例: 下面的规则将会匹配序号数为3的倍数的所有p元素。在第一行中,b等于0,因此可以忽略不写(见第二行): p:nth-child(3n+0) { color:#f00; } 偏移量可以用来指定样式的循环是从哪个元素开始应用的。如果有一个20行的表格,我们希望从第10行以后的奇数行开始使用不同的背景颜色,就可以使用下面这条规则: tr:nth-child(2n+11) { background:#ff0; } 由于n是从为开始的,因此第一个受影响的tr元素的序号是11(2*0+11=11,dudo注)。接下来就是第13行(2*1+11=13)再接下来就第15行(2*2+11=15),以此类推。 更详细介绍请参照CSS 3选择符中的《nth-child()伪类》。 那么,对于这样有用的一个选择符又有哪些浏览器支持它呢?很糟糕,据我所知,没有一个浏览器支持这个选择符甚至没有浏览器支持nth类的选择符。如果有的话请帮我指正(Firefox3和IE8目前是否支持?dudo) :nth-of-type() :nth-of-type()伪类和nth-child()伪类找使用方法十分相似,只不过他匹配的是规则中指明类型的元素。下面的规则将会匹配每个属于父元素中第三个子元素的p元素(属于第3个子元素的p在一个该当中可能会有很多,只不过他们位于不同的父元素下,dudo注): p:nth-of-type(3) { background:#ff0; } 当你想确定是否已经指向了第三个p元素,这种方法会很有用。开始你可能觉得这和使用nth-child效果是一样的,但是nth-child(3)会把所有的子元素都计算进来,因此结果可能就会不一样,除非p所有的所有兄弟元素也都是p元素。 :nth-of-type伪类目前还没有浏览器支持。 :nth-last-of-type伪类 p:nth-last-of-type(2) { background:#ff0; } :nth-last-of-type()目前还没有浏览器支持。 :last-child伪类 :last伪类指向的是父元素中最后一个子元素。它和:nth-last-child(1)效果是一样的。下面的规则匹配所有属于父元素中最后一个子元素的p: p:last-child { background:#ff0; } :last-childe伪类可以在基于Mozilla的浏览器中使用。Opera不支持:last-childe伪类,在Safri中存在bug(上面的规则会匹配到所有的p元素)。令人稀奇是的它可以在OmniWeb(测试版本5.1.1)中正常使用,尽管这个浏览器是基于Safari的。这可能是因为Apple WebKit最新版本的回归,因为OmniWeb使用的WebKit通常要比Safari版本稍微低一点。
更多资源及Java+大数据个人原创视频,
可关注本站官方公众号观看: ![]()
![]() html5star team © 2012-2013 html5星空 Comsenz Inc. GMT+8, 2020-8-14 09:33 , Processed in 0.103531 second(s), 31 queries . |