读书频道 > 网站 > 网页设计 > HTML 5与CSS 3权威指南(第3版·下册)
19.3.4 选择器nth-of-type和nth-last-of-type
15-10-10    下载编辑
收藏    我要投稿   
下册详细介绍了CSS 3中各种新增样式与属性,其中主要包括CSS 3中的各种选择器、文字与字体、背景与边框、各种盒模型、CSS 3中的布局方式、CSS 3中的变形与动画、CSS 3中与媒体类型相关的一些样式与属性等。立即去当当网订购

1.使用选择器nth-child和nth-last-child时会产生的问题

之前,我们介绍过将nth-child选择器与nth-last-child选择器用于某些元素时,会产生一些问题,这里我们首先来看一下究竟会产生什么问题。

在代码清单19-15中,我们给出一个HTML页面代码,在该页面中,存在一个div元素,在该div元素中,又给出几篇文章的标题与每篇文章的正文。

代码清单19-15 nth-of-type选择器与nth-last-of-type选择器使用示例的HTML页面

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html;charset=gb2312" />
<title>nth-of-type选择器与nth-last-of-type选择器使用示例</title>
</head>
<body>
<div>
<h2>文章标题A</h2>
<p>文章正文。</p>
<h2>文章标题B</h2>
<p>文章正文。</p>
<h2>文章标题C</h2>
<p>文章正文。</p>
<h2>文章标题D</h2>
<p>文章正文。</p>
</div>
</body>
</html>

为了让第奇数篇文章的标题与第偶数篇文章的标题的背景色不一样,我们首先使用nth-child选择器来进行指定,指定第奇数篇文章的标题背景色为黄色,第偶数篇文章的标题背景色为浅蓝色,书写方法如下所示。

<style type="text/css">
h2:nth-child(odd){
    background-color: yellow;
}
h2:nth-child(even){
    background-color: skyblue;
}
</style>

将上面这段指定样式的代码添加到如代码清单19-15所示的HTML页面中,然后在浏览器中查看该页面的运行结果,如图19-19所示。

运行结果并没有如预期的那样,让第奇数篇文章的标题背景色为黄色,第偶数篇文章的标题背景色为浅蓝色,而是所有文章的标题都变成了黄色。

这个问题的产生原因在于:nth-child选择器在计算子元素是第奇数个元素还是第偶数个元素时,是连同父元素中的所有子元素一起计算的。

换句话说,“h2:nth-child(odd)”这行代码的含义,并不是指“针对div元素中第奇数个h2子元素来使用”,而是指“当div元素中的第奇数个子元素如果是h2子元素时使用”。

所以在上面这个示例中,因为h2元素与p元素相互交错,所有h2元素都处于奇数位置,所以所有h2元素的背景色都变成了黄色,而处于偶数位置的p元素,因为没有指定第偶数个位置的子元素的背景色,所以没有发生变化。

当父元素是列表时,因为列表中只可能有列表项目一种子元素,所以不会有问题,而当父元素是div时,因为div元素中包含多种子元素,所以出现了问题。

2. 使用选择器nth-of-type和nth-last-of-type

在CSS 3中,使用nth-of-type选择器与nth-last-of-type选择器来避免这类问题的发生。使用这两个选择器时,CSS 3在计算子元素是第奇数个子元素还是第偶数个子元素时,就只针对同类型的子元素进行计算了。这两个选择器的使用方法如下所示。

<style type="text/css">
h2:nth-of-type(odd){
    background-color: yellow;
}
h2:nth-of-type(even){
    background-color: skyblue;
}
</style>

把以上这段代码添加到代码清单19-15所示页面中,然后运行该页面,运行结果如
图19-20所示。
  

 

另外,如果计算奇数还是偶数时需要从下往上倒过来计算,可以使用nth-last-of-type选择器来代替nth-last-child选择器,进行倒序计算。

nth-of-type选择器与nth-last-of-type选择器都是从CSS 3开始被提供,目前为止被Firefox、Safari、Google Chrome、Opera浏览器所支持,到IE 8为止,还没有获得IE浏览器的支持。

点击复制链接 与好友分享!回本站首页
分享到: 更多
您对本文章有什么意见或着疑问吗?请到论坛讨论您的关注和建议是我们前行的参考和动力  
上一篇:1.3 功能
下一篇:1.5 小结
相关文章
图文推荐
JavaScript网页动画设
1.9 响应式
1.8 登陆页式
1.7 主题式
排行
热门
文章
下载
读书

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训
版权所有: 红黑联盟--致力于做最好的IT技术学习网站