详解CSS3中nth-child与nth-of-type的区别


Posted in HTML / CSS onJanuary 05, 2017

CSS3中nth-child与nth-of-type的区别其实很简单::nth-of-type为什么要叫:nth-of-type?因为它是以"type"来区分的。也就是说:ele:nth-of-type(n)是指父元素下第n个ele元素, 而ele:nth-child(n)是指父元素下第n个元素且这个元素为ele,若不是,则选择失败。

文字未免听起来比较晦涩,便于理解,这里附上一个小例子:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>demo</title>
</head>
<style>
.demo li:nth-child(2){
color: #ff0000;
}
.demo li:nth-of-type(2){
color: #00ff00;
}
</style>
<body>
<div>
<ul class="demo">
<p>zero</p>
<li>one</li>
<li>two</li>
</ul>
</div>
</body>
</html>

结果如下:

详解CSS3中nth-child与nth-of-type的区别

上面这个例子,.demo li:nth-child(2)选择的是<li>one</li>节点,而.demo li:nth-of-type(2)则选择的是<li>two</li>节点。

但是如果在nth-child和 nth-of-type前不指定标签呢?

.demo :nth-child(2){
color: #ff0000;
}
.demo :nth-of-type(2){
color: #00ff00;
}

这样又会是什么结果呢,看下html结构:

<ul class="demo">
<p>first p</p>
<li>first li</li>
<li>second li</li>
<p>second p</p>
</ul>

结果:

详解CSS3中nth-child与nth-of-type的区别

如上可见,在他们之前不指定标签类型,:nth-child(2) 选中依旧是第二个元素,无论它是什么标签。而 :nth-type-of(2) 选中了两个元素,分别是父级.demo中的第二个p标签和第二个li标签,由此可见,不指定标签类型时,:nth-type-of(2)会选中所有类型标签的第二个。

我们已经了解了nth-child和 nth-of-type的基本使用与区别,那么更进一步nth-of-type(n)与nth-child(n)中的n是什么呢?

nth-of-type(n)与nth-child(n)中的n可以是数字、关键词或公式。 数字:也就是上面例子的使用,就不做赘述。 关键词:Odd 、even

Odd 和 even 是可用于匹配下标是奇数或偶数的子元素的关键词

注意:第一个子元素的下标是 1

在这里,我们为奇数和偶数 p 元素指定两种不同的背景色:

p:nth-of-type(odd)
{
background:#ff0000;
}
p:nth-of-type(even)
{
background:#0000ff;
}

公式:或者说是算术表达式

使用公式 (an + b)。描述:表示周期的长度,n 是计数器(从 0 开始),b 是偏移值。

在这里,我们指定了下标是 3 的倍数的所有 p 元素的背景色:

p:nth-of-type(3n+0)
{
background:#ff0000;
}

若是 :nth-of-type(4n+2) 就是选择下标是4的倍数加上2的所有元素

总结

以上就是关于css3中nth-child和 nth-of-type区别的全部内容了,希望本文的内容对大家学习或者使用CSS3能有一定的帮助,如果有疑问大家可以留言交流。

HTML / CSS 相关文章推荐
CSS3 media queries + jQuery实现响应式导航
Sep 30 HTML / CSS
css3 box-shadow阴影(外阴影与外发光)图示讲解
Aug 11 HTML / CSS
css3动画效果抖动解决方法
Sep 03 HTML / CSS
用CSS禁用输入法(CSS3 UI规范)实例解析
Dec 04 HTML / CSS
css3 线性渐变和径向渐变示例附图
Apr 08 HTML / CSS
HTML5+CSS3实例 :canvas 模拟实现电子彩票刮刮乐代码
Dec 30 HTML / CSS
CSS3 旋转立方体问题详解
Jan 09 HTML / CSS
CSS3 实现弹跳的小球动画
Oct 26 HTML / CSS
html5中去掉input type date默认样式的方法
Sep 06 HTML / CSS
基于HTML5 Canvas:字符串,路径,背景,图片的详解
May 09 HTML / CSS
canvas 绘图时位置偏离的问题解决
Sep 16 HTML / CSS
Canvas实现放大镜效果完整案例分析(附代码)
Nov 26 HTML / CSS
CSS3打造百度贴吧的3D翻牌效果示例
Jan 04 #HTML / CSS
谈谈对css属性box-sizing的了解
Jan 04 #HTML / CSS
纯CSS3制作的鼠标悬停时边框旋转
Jan 03 #HTML / CSS
HTML5+CSS3网页加载进度条的实现,下载进度条的代码实例
Dec 30 #HTML / CSS
HTML5+CSS3实例 :canvas 模拟实现电子彩票刮刮乐代码
Dec 30 #HTML / CSS
HTML5+CSS3 诱人的实例:3D立方体旋转动画实例
Dec 30 #HTML / CSS
CSS3实现瀑布流布局与无限加载图片相册的实例代码
Dec 22 #HTML / CSS
You might like
PHP 过滤页面中的BOM(实现代码)
2013/06/29 PHP
PHP error_log()将错误信息写入一个文件(定义和用法)
2013/10/25 PHP
php实现将数组转换为XML的方法
2015/03/09 PHP
JavaScript 仿关机效果的图片层
2008/12/26 Javascript
引用其它js时如何同时处理多个window.onload事件
2014/09/02 Javascript
JS+CSS实现下拉列表框美化效果(3款)
2015/08/15 Javascript
JavaScript常用字符串与数组扩展函数小结
2016/04/24 Javascript
Vue.JS入门教程之处理表单
2016/12/01 Javascript
Jquery EasyUI Datagrid右键菜单实现方法
2016/12/30 Javascript
简述jQuery Easyui一些用法
2017/08/01 jQuery
完美解决axios在ie下的兼容性问题
2018/03/05 Javascript
js打开word文档预览操作示例【不是下载】
2019/05/23 Javascript
vue弹出框组件封装实例代码
2019/10/31 Javascript
简单了解JavaScript弹窗实现代码
2020/05/07 Javascript
js实现右键弹出自定义菜单
2020/09/08 Javascript
Python实现计算文件夹下.h和.cpp文件的总行数
2015/04/23 Python
Python中operator模块的操作符使用示例总结
2016/06/28 Python
Python加密方法小结【md5,base64,sha1】
2017/07/13 Python
python实现感知器算法详解
2017/12/19 Python
对python中Librosa的mfcc步骤详解
2019/01/09 Python
postman模拟访问具有Session的post请求方法
2019/07/15 Python
Python批量处理csv并保存过程解析
2020/05/16 Python
Python csv文件记录流程代码解析
2020/07/16 Python
CSS3中的元素过渡属性transition示例详解
2016/11/30 HTML / CSS
CSS3点击按钮实现背景渐变动画效果
2016/10/19 HTML / CSS
简约控的天堂:The Undone
2016/12/21 全球购物
世界领先的电子书网站:eBooks.com(在线购买小说、非小说和教科书)
2019/03/30 全球购物
铭宣海淘转运:美国、日本、英国转运等全球转运公司
2019/09/10 全球购物
办公室文书岗位职责
2013/12/16 职场文书
国家助学金获奖感言
2014/01/31 职场文书
《小池塘》教学反思
2014/02/28 职场文书
市场营销专业毕业生求职信
2014/03/26 职场文书
长城英文导游词
2015/01/30 职场文书
关于召开会议的通知
2015/04/15 职场文书
就业指导讲座心得体会
2016/01/15 职场文书
《月球之谜》教学反思
2016/02/20 职场文书