CSS3属性选择符及其伪类

CSS3增加了很多非常有用的选择符及其伪类,利用这些新的技术,可以在我们的日常工作中节省不少的时间,并且减少HTML及CSS文件的大小。

今天主要介绍一下CSS3新增加的属性选择符和伪类。下表仅是其中的一部分,有些伪类没有在下面表中,如:root等伪类。

CSS3选择符语法概览:

上表来自于蓝色理想(有修改):http://www.blueidea.com/tech/web/2008/5708.asp

1. 字串匹配的属性选择符:

a) E[att^="val"] 匹配具有att属性、且值以val开头的E元素

例如:


<div class="no001">1</div>
<div class="no002">2</div>
<div class="yes003">3</div>
<div class="yes004">4</div>
<div class="no005">5</div>

CSS代码:

div[class^="no"] {background:#F00;}

这个代码表示:class属性以”no”开头的div元素背景颜色将会是红色(#F00);

查看演示
b) E[att$="val"]匹配具有att属性、且值以val结尾的E元素

例如:


<div class="xunzou">1</div>
<div class="kaizou">2</div>
<div class="dazou">3</div>
<div class="yes004">4</div>
<div class="no005">5</div>

CSS代码:

div[class$="zou"] {background:#000;}

这个代码表示:class属性以”zou”结尾的div元素背景颜色将会是黑色(#000);

查看演示
c) E[att*="val"] 匹配具有att属性、且值中含有val的E元素

例如:


<div class="abcde">1</div>
<div class="abc">2</div>
<div class="de">3</div>
<div class="abd">4</div>
<div class="bce">5</div>

CSS代码:

div[class*="ab"] {background:#CCC;}

这个代码表示:class属性的值包含有”ab ”的div元素背景颜色将会是灰色(#CCC);

查看演示

我们其实可以用这个属性选择符来做一个这样的事情,比如说你的网站上有外站的连接,比如说友情连接等,你可以用属性选择符来匹配包含http值的元素使其后面增加一个小图标(注意本站的文章中已经有类似的效果)。但是有时候自己的站也会加上绝对地址,这样的话,站内连接也会加上图标了。我们可以再次使用属性选择符来消除上面的本站内的效果。
例如:

a[href^=”http://”] , a[href^=”https://”] {/*现在一些站也有以https连接的,所以要加上这个。*/
padding:0 15px 0 0;/*右边空出15px来放置小图片*/
background:url(图片地址) no-repeat right top;/*将图片放置与右上角*/
}
a[href*=”xunzou”]{ /*这里以我的网站为例,取消站内连接的小图标*/
	padding:0;/*去掉右边空出的15px*/
	background:none;/*去掉图片*/
}

2. 结构性伪类

a) E:nth-child(n) 匹配父元素中的第n个子元素E

这个元素在你做列表或者数据表格的时候将非常有用。例如:E:nth-child(2) 在这里的数字2.将选中第二行。最常见的“隔行换色”就可以用这个伪类轻松的做出。例如:E:nth-child(2n+1){background:#F00};这个是隔行换色。这里的n可以取任何整数值,你也可以给n取和负值。

这里是一些常用的取值,希望可以帮助大家理解这个属性。

这里有个网址你可以测试它的数值以及产生的效果:

http://css-tricks.com/examples/nth-child-tester/

关于E:nth-child(n)的一些其他文章:

http://css-tricks.com/how-nth-child-works/
http://devsnippets.com/article/5-advanced-css-pseudo-class.html
查看演示
b) E:nth-last-child(n) 匹配父元素中的倒数第n个结构子元素E

这个匹配的是父元素中倒数第n个子元素。例如:


#nthlc li:nth-last-child(2) {
	background: #999;/*这里第五个li将会显示背景色为灰色(#999)*/
}

CSS代码:

<ul id=”nthlc”>
	<li>第1个li</li>
<li>第2个li</li>
	<li>第3个li</li>
<li>第4个li</li>
	<li>第5个li</li>
<li>第6个li</li>
</ul>

查看演示
c) E:nth-of-type(n) 匹配同类型中的第n个同级兄弟元素E

例如:


#nthot em:nth-of-type (2) {
	background: #999;/*这里第2个em将会显示背景色为灰色(#999)*/
}

html代码:

<div id=”nthot”>
	 <p>这里是第1个p</p>
<p>这里是第2个p</p>
<em>这里是第1个em</em>
<em>这里是第2个em</em>
<p>这里是第3个p</p>
</div>

查看演示


d) E:nth-last-of-type(n) 匹配同类型中的倒数第n个同级兄弟元素E

例如:


#nthlc em:nth-last-of-type(2) {
	background: #999;/*这里第1个em将会显示背景色为灰色(#999)*/
}

html代码:

<div id=”nthlot”>
	 <p>这里是第1个p</p>
<p>这里是第2个p</p>
<em>这里是第1个em</em>
<em>这里是第2个em</em>
<p>这里是第3个p</p>
</div>

查看演示


e) E:last-child匹配父元素中最后一个E元素

例如:


#lc p:last-child {
	background: #999;/*这里最后一个p将会显示背景色为灰色(#999)*/
}

html代码:

<div id=”lc”>
	 <p>这里是第1个p</p>
<p>这里是第2个p</p>
<em>这里是第1个em</em>
<em>这里是第2个em</em>
<p>这里是第3个p</p>
</div>

查看演示


f) E:first-of-type匹配同级兄弟元素中的第一个E元素

例如:


#fot  p:first-of-type{
	background: #999;/*这里第1个p将会显示背景色为灰色(#999)*/
}

html代码:

<div id=”fot”>
<em>这里是第1个em</em>
<em>这里是第2个em</em>
	<p>这里是第1个p</p>
<p>这里是第2个p</p>
<p>这里是第3个p</p>
</div>

查看演示

g) E:only-child匹配属于父元素中唯一子元素的E

例如:


#oc  p:only-child{
	background: #999;/*这里唯一的1个p将会显示背景色为灰色(#999)*/
}

html代码:

<div>
			<em>这是div里的1个em</em>
		</div>
		<div>
			<p>这里div里的第1个p和em不在同一个父元素</p>
			<p>这里div里的第2个p</p>
		</div>

查看演示

h) E: only-of-type 匹配属于同类型中唯一兄弟元素的E

例如:


#pc08 p:only-of-type {
	background: #999;/*这里唯一的1个p将会显示背景色为灰色(#999)*/
}

html代码:

<div class="Pc" id="pc08">
		<h3>E:only-of-type</h3>
		<em>这里是第1个em</em>
		<em>这里是第2个em</em>
		<p>这里是唯一的1个p</p>
		<em>这里是第3个em</em>
		<em>这里是第4个em</em>
	</div>

查看演示

i) E:empty匹配没有任何子元素(包括text节点)的原色E

例如:


div em:empty{
	background: #999;/*这里空元素p将会显示背景色为灰色(#999)*/
}

html代码:

<div>
	<p>这里是第1个p</p>
	<p></p>
<em>上面第二个p背景色为灰色</em>
</div>

查看演示

j) E:target匹配相关URL指向的E元素

例如:


div p:target{
	background: #999;/*这里空原色p将会显示背景色为灰色(#999)*/
}

html代码:

<div>
	<p><a href=”#pid”这里是第1个a</a></p>
	<p>这是第二个p</p>
	<p id=”pid”>这是第三个p,有个id是pid,这个会变色</p>
</div>

查看演示

k) E:not(s) 匹配所有不匹配简单选择符s的元素E

例如:


div p:not(.ab){
	background: #999;/*这里.ab将没有背景色,其它p显示背景色为灰色(#999)*/
}

html代码:

<div>
	<p class="ab">这里是第1个p</p>
	<p class="cd">这里是第2个p</p>
	<p>这里是第3个p</p>
</div>

查看演示

l) E ~ F匹配E元素之后的F元素

例如:


div p:not(.ab){
	background: #999;/*这里.ab将没有背景色,其它p显示背景色为灰色(#999)*/
}

html代码:

<div>
	<p class="ab">这里是第1个p</p>
	<p class="cd">这里是第2个p</p>
	<p>这里是第3个p</p>
</div>

查看演示

这里基本上罗列的一些css3的属性选择符以及伪类,还有一些没有写上。欢迎大家拍砖。感谢腾 讯Webteam 开发的CSS3手册,以上有一部分内容参考了CSS3手册

浏览器支持:以上12个伪类仅E ~ F 兄弟选择器IE6以上浏览器支持外,其他IE6及其以下浏览器均不支持。但是最新的firefox、opera、Safari 和chrome都支持这些伪类。

0 条留言

我要留言
(必填)
(必填,绝不公开)