详解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实现的鼠标经过按钮特效教程
Nov 09 HTML / CSS
实列教程 一款基于jquery和css3的响应式二级导航菜单
Nov 13 HTML / CSS
CSS3动画效果回调处理详解
Dec 10 HTML / CSS
html5 touch事件实现触屏页面上下滑动(一)
Mar 10 HTML / CSS
HTML5进度条特效
Dec 18 HTML / CSS
浅谈Html5中视频 音频标签 进度条的问题
Jul 26 HTML / CSS
HTML5利用约束验证API来检查表单的输入数据的代码实例
Dec 20 HTML / CSS
HTML5 文件上传下载的实例代码
Jul 03 HTML / CSS
Html5饼图绘制实现统计图的方法
Aug 05 HTML / CSS
AmazeUI框架搭建的方法步骤(图文)
Aug 17 HTML / CSS
深入理解margin塌陷和margin合并的解决方案
Jun 26 HTML / CSS
使用CSS实现黑白格背景效果
Jun 01 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安装问题
2006/10/09 PHP
php 删除一个数组中的某个值.兼容多维数组!
2012/02/18 PHP
php实现点击可刷新验证码
2015/11/07 PHP
Yii清理缓存的方法
2016/01/06 PHP
HTML中嵌入PHP的简单方法
2016/02/16 PHP
ThinkPHP实现分页功能
2017/04/28 PHP
JavaScript 组件之旅(二)编码实现和算法
2009/10/28 Javascript
javascript实现的弹出层背景置灰-模拟(easyui dialog)
2013/12/27 Javascript
深入理解JavaScript系列(48):对象创建模式(下篇)
2015/03/04 Javascript
基于Jquery代码实现支持PC端手机端幻灯片代码
2015/11/17 Javascript
AngularJS进行性能调优的7个建议
2015/12/28 Javascript
javascript实现无法关闭的弹框
2016/11/27 Javascript
jQuery鼠标移动图片上实现放大效果
2017/06/25 jQuery
jQuery Datatable 多个查询条件自定义提交事件(推荐)
2017/08/24 jQuery
Thinkjs3新手入门之添加一个新的页面
2017/12/06 Javascript
深入浅析Vue中的 computed 和 watch
2018/06/06 Javascript
微信小程序实现点击按钮后修改颜色
2019/12/05 Javascript
如何在Node和浏览器控制台中打印彩色文字
2020/01/09 Javascript
[05:45]Ti4观战指南(下)
2014/07/07 DOTA
Python实现生成简单的Makefile文件代码示例
2015/03/10 Python
Python中每次处理一个字符的5种方法
2015/05/21 Python
各个系统下的Python解释器相关安装方法
2015/10/12 Python
python中numpy的矩阵、多维数组的用法
2018/02/05 Python
python3调用windows dos命令的例子
2019/08/14 Python
在python里使用await关键字来等另外一个协程的实例
2020/05/04 Python
Python lxml库的简单介绍及基本使用讲解
2020/12/22 Python
HTML5 CSS3给网站设计带来出色效果
2009/07/16 HTML / CSS
Skyscanner波兰:廉价航班
2017/11/07 全球购物
华美博弈C/VC工程师笔试试题
2012/07/16 面试题
教师实习自我鉴定
2013/12/13 职场文书
同事打架检讨书
2014/02/04 职场文书
机关驾驶员违规检讨书
2014/09/13 职场文书
钢铁是怎样炼成的读书笔记
2015/06/29 职场文书
英语版自我评价,35句话轻松搞定
2019/10/08 职场文书
MySQL root密码的重置方法
2021/04/21 MySQL
使用 MybatisPlus 连接 SqlServer 数据库解决 OFFSET 分页问题
2022/04/22 SQL Server