详解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 相关文章推荐
CSS实现鼠标滑过鼠标点击代码写法
Dec 26 HTML / CSS
css3 position fixed固定居中问题解决方案
Aug 19 HTML / CSS
推荐一些比较有用的css3新属性
Nov 11 HTML / CSS
Html5页面在微信端的分享的实现方法
Aug 30 HTML / CSS
HTML5实现经典坦克大战坦克乱走还能发出一个子弹
Sep 02 HTML / CSS
HTML5+CSS3绘制锯齿状的矩形
Mar 01 HTML / CSS
详解使用双缓存解决Canvas clearRect引起的闪屏问题
Apr 29 HTML / CSS
HTML5 Canvas 实现K线图的示例代码
Dec 23 HTML / CSS
前后端结合实现amazeUI分页效果
Aug 21 HTML / CSS
Bootstrap File Input文件上传组件
Dec 01 HTML / CSS
css 边框添加四个角的实现代码
Oct 16 HTML / CSS
Unicode中的CJK(中日韩统一表意文字)字符小结
Dec 06 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 Stream_*系列函数
2010/08/01 PHP
php错误提示failed to open stream: HTTP request failed!的完美解决方法
2011/06/06 PHP
如何设置mysql允许外网访问
2013/06/04 PHP
Codeigniter实现智能裁剪图片的方法
2014/06/12 PHP
Nigma vs Alliance BO5 第四场2.14
2021/03/10 DOTA
php析构函数的具体用法小结
2014/03/11 Javascript
用Jquery.load载入页面后样式没了页面混乱的解决方法
2014/10/20 Javascript
js实现汉字排序的方法
2015/07/23 Javascript
angular route中使用resolve在uglify压缩后问题解决
2016/09/21 Javascript
原生js实现中奖信息无间隙滚动效果
2017/01/18 Javascript
JS 实现 ajax 异步浏览器兼容问题
2017/01/21 Javascript
JS实现的JSON序列化操作简单示例
2018/07/02 Javascript
JS使用正则表达式判断输入框失去焦点事件
2019/10/16 Javascript
微信小程序动态添加和删除组件的现实
2020/02/28 Javascript
JS数据类型分类及常用判断方法
2020/11/19 Javascript
[01:24]2014DOTA2 TI第二日 YYF表示这届谁赢都有可能
2014/07/11 DOTA
[07:09]2014DOTA2国际邀请赛-Newbee再次发威成功晋级决赛
2014/07/19 DOTA
[02:07]TI9显影之尘系列 - Vici Gaming
2019/08/20 DOTA
一步步解析Python斗牛游戏的概率
2016/02/12 Python
Python多线程、异步+多进程爬虫实现代码
2016/02/17 Python
python游戏地图最短路径求解
2019/01/16 Python
TensorFlow绘制loss/accuracy曲线的实例
2020/01/21 Python
html5中嵌入视频自动播放的问题解决
2020/05/25 HTML / CSS
Python是如何进行类型转换的
2013/06/09 面试题
过滤器的用法
2013/10/08 面试题
区域销售经理职责
2013/12/22 职场文书
厂长助理岗位职责
2013/12/27 职场文书
校园招聘策划书
2014/01/09 职场文书
国税会议欢迎词
2014/01/16 职场文书
关于旅游的活动方案
2014/08/15 职场文书
工作违纪的检讨书范文
2019/07/09 职场文书
用基于python的appium爬取b站直播消费记录
2021/04/17 Python
Flask使用SQLAlchemy实现持久化数据
2021/07/16 Python
Python中time与datetime模块使用方法详解
2022/03/31 Python
【TED出品】天梯非主流开心游1700 划水骑士
2022/03/31 魔兽争霸