详解CSS3选择器:nth-child和:nth-of-type之间的差异


Posted in HTML / CSS onSeptember 18, 2017

先看一个简单的实例,首先是HTML部分:

<section>
    <p>我是第1个p标签</p>
    <p>我是第2个p标签</p>  <!-- 希望这个变红 -->
</section>

然后两个选择器相对应的CSS代码如下:

p:nth-child(2) { color: red; }
p:nth-of-type(2) { color: red; }

上面这个例子中,这两个选择器所实现的效果是一致的,第二个p标签的文字变成了红色:

详解CSS3选择器:nth-child和:nth-of-type之间的差异

尽管上面两个demo的最后效果一致,但是两个选择器之间存在差异是必然的。

对于:nth-child选择器,在简单白话文中,意味着选择一个元素:

1、这是个段落元素
2、这是父标签的第二个孩子元素

对于:nth-of-type选择器,意味着选择一个元素:

1、选择父标签的第二个段落子元素

我们把上面的实例稍作修改,就可以看到这两个选择器之间的差异表现了,如下HTML代码:

<section>
    <div>我是一个普通的div标签</div>
    <p>我是第1个p标签</p>
    <p>我是第2个p标签</p>  <!-- 希望这个变红 -->
</section>

还是与上面例子一致的CSS测试代码:

p:nth-child(2) { color: red; }

详解CSS3选择器:nth-child和:nth-of-type之间的差异

 

p:nth-of-type(2) { color: red; }

详解CSS3选择器:nth-child和:nth-of-type之间的差异

这时候两个选择器所渲染的结果就不一样了。

p:nth-child(2)其渲染的结果不是第二个p标签文字变红,而是第一个p标签,也就是父标签的第二个子元素。

p:nth-of-type(2)的表现显得很坚挺,其把希望渲染的第二个p标签染红了。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

HTML / CSS 相关文章推荐
CSS3 中的@keyframes介绍
Sep 02 HTML / CSS
深入浅析css3 中display box使用方法
Nov 25 HTML / CSS
CSS3中的Transition过度与Animation动画属性使用要点
May 20 HTML / CSS
HTML5打开本地app应用的方法
Mar 31 HTML / CSS
HTML5之多线程(Web Worker)
Jan 02 HTML / CSS
HTML5之SVG 2D入门13—svg对决canvas及长处和适用场景分析
Jan 30 HTML / CSS
实例讲解HTML5的meta标签的一些应用
Dec 08 HTML / CSS
html5中canvas图表实现柱状图的示例
Nov 13 HTML / CSS
使用html5 canvas绘制圆环动效
Jun 03 HTML / CSS
CSS实现隐藏搜索框功能(动画正反向序列)
Jul 21 HTML / CSS
分享CSS盒子模型隐藏的几种方式
Feb 28 HTML / CSS
通过feDisplacementMap和feImage实现水波特效
Apr 24 HTML / CSS
HTML5+CSS3 实现灵动的动画 TAB 切换效果(DEMO)
Sep 15 #HTML / CSS
CSS3 Calc实现滚动条出现页面不跳动问题
Sep 14 #HTML / CSS
基于CSS3 animation动画属性实现轮播图效果
Sep 12 #HTML / CSS
用css3写出气球样式的示例代码
Sep 11 #HTML / CSS
CSS3的 fit-content实现水平居中
Sep 07 #HTML / CSS
CSS3的calc()做响应模式布局的实现方法
Sep 06 #HTML / CSS
HTML+CSS3模拟心的跳动实例代码
Sep 05 #HTML / CSS
You might like
PHP程序开发范例学习之表单 获取文本框的值
2011/08/08 PHP
windows下apache搭建php开发环境
2015/08/27 PHP
php单例模式的简单实现方法
2016/06/10 PHP
php微信公众号开发模式详解
2016/11/28 PHP
PHP实现上传多图即时显示与即时删除的方法
2017/05/09 PHP
firefo xml 读写实现js代码
2009/06/11 Javascript
jQuery的实现原理的模拟代码 -4 重要的扩展函数 extend
2010/08/03 Javascript
jQuery1.6 使用方法一
2011/11/23 Javascript
js关闭浏览器窗口及检查浏览器关闭事件
2013/09/03 Javascript
js中的事件捕捉模型与冒泡模型实例分析
2015/01/10 Javascript
浅谈javascript 函数属性和方法
2015/01/21 Javascript
javascript三元运算符用法实例
2015/04/16 Javascript
使用node+vue.js实现SPA应用
2016/01/28 Javascript
BootStrap+Angularjs+NgDialog实现模式对话框
2016/08/24 Javascript
vue实现todolist单页面应用
2017/04/11 Javascript
JS和jQuery通过this获取html标签中的属性值(实例代码)
2017/09/11 jQuery
从对象列表中获取一个对象的方法,依据关键字和值
2017/09/20 Javascript
vue中路由参数传递可能会遇到的坑
2017/12/07 Javascript
switchery按钮的使用方法
2017/12/18 Javascript
JavaScript EventEmitter 背后的秘密 完整版
2018/03/29 Javascript
[03:20]次级联赛厮杀超职业 现超级兵对拆世纪大战
2014/10/30 DOTA
python中split方法用法分析
2015/04/17 Python
详解如何用OpenCV + Python 实现人脸识别
2017/10/20 Python
对python特殊函数 __call__()的使用详解
2019/07/02 Python
深度学习入门之Pytorch 数据增强的实现
2020/02/26 Python
jupyter notebook 的工作空间设置操作
2020/04/20 Python
详解Python中namedtuple的使用
2020/04/27 Python
Pyecharts地图显示不完成问题解决方案
2020/05/11 Python
css3动画事件—webkitAnimationEnd与计时器time事件
2013/01/31 HTML / CSS
Maxpeedingrods美国:高性能汽车零件
2020/02/14 全球购物
高中体育教学反思
2014/01/24 职场文书
难忘的一课教学反思
2014/04/30 职场文书
广场舞大赛策划方案
2014/05/31 职场文书
Python中的np.argmin()和np.argmax()函数用法
2021/06/02 Python
nginx的zabbix 5.0安装部署的方法步骤
2021/07/16 Servers
vscode内网访问服务器的方法
2022/06/28 Servers