详解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伸缩布局盒模型Flex布局
Aug 20 HTML / CSS
修复iPhone的safari浏览器上submit按钮圆角bug
Dec 24 HTML / CSS
CSS书写规范、顺序和命名规则
Mar 06 HTML / CSS
纯CSS实现右侧底部悬浮效果(悬浮QQ、微信、微博、邮箱等联系方式)
Apr 24 HTML / CSS
CSS3的 fit-content实现水平居中
Sep 07 HTML / CSS
html5+css3之制作header实例与更新
Dec 21 HTML / CSS
仿CSDN Blog返回页面顶部功能实现原理及代码
Jun 30 HTML / CSS
HTML5梦幻之旅——炫丽的流星雨效果实现过程
Aug 06 HTML / CSS
使用HTML5的Canvas绘制曲线的简单方法
Sep 08 HTML / CSS
HTML5实现多张图片上传功能
Mar 11 HTML / CSS
JavaScript+Canvas实现自定义画板的示例代码
May 13 HTML / CSS
浅谈css清除浮动(clearfix和clear)的用法
May 21 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去除换行符的方法小结(PHP_EOL变量的使用)
2013/02/16 PHP
php打开文件fopen函数的使用说明
2013/07/05 PHP
php批量更改数据库表前缀实现方法
2013/10/26 PHP
一个简单的jQuery插件ajaxfileupload.js实现ajax上传文件例子
2014/06/26 Javascript
javascript使用shift+click实现选择和反选checkbox的方法
2015/05/04 Javascript
jquery实现浮动在网页右下角的彩票开奖公告窗口代码
2015/09/04 Javascript
js获取时间精确到秒(年月日)
2016/03/16 Javascript
jQuery 全选 全部选 反选 实现代码
2016/08/17 Javascript
详解微信小程序开发之——wx.showToast(OBJECT)的使用
2017/01/18 Javascript
JS判断指定dom元素是否在屏幕内的方法实例
2017/01/23 Javascript
js统计页面上每个标签的数量实例代码
2018/05/29 Javascript
JavaScript类的继承方法小结【组合继承分析】
2018/07/11 Javascript
Node.js net模块功能及事件监听用法分析
2019/01/05 Javascript
js实现图片无缝循环轮播
2019/10/28 Javascript
vue项目中使用eslint+prettier规范与检查代码的方法
2020/01/16 Javascript
解决elementui表格操作列自适应列宽
2020/12/28 Javascript
Python抽象类的新写法
2015/06/18 Python
Python单例模式的两种实现方法
2017/08/14 Python
JS设计模式之责任链模式实例详解
2018/02/03 Python
详解python中自定义超时异常的几种方法
2019/07/29 Python
Python常用数据类型之间的转换总结
2019/09/06 Python
python的Jenkins接口调用方式
2020/05/12 Python
python接口自动化之ConfigParser配置文件的使用详解
2020/08/03 Python
canvas版人体时钟的实现示例
2021/01/29 HTML / CSS
HEMA英国:荷兰原创设计
2018/08/28 全球购物
区三好学生主要事迹
2014/01/30 职场文书
大学四年个人的自我评价
2014/02/26 职场文书
出国留学经济担保书
2014/04/01 职场文书
党支部对照检查材料
2014/08/25 职场文书
2014年学校安全工作总结
2014/11/13 职场文书
颐和园的导游词
2015/01/30 职场文书
五星级酒店前台接待岗位职责
2015/04/02 职场文书
2015年纪检监察工作总结
2015/04/08 职场文书
开展警示教育活动总结
2015/05/09 职场文书
邓小平文选读书笔记
2015/06/29 职场文书
Python下opencv库的安装过程及问题汇总
2021/06/11 Python