详解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 please 跨浏览器的CSS3产生器
Mar 14 HTML / CSS
修复iPhone的safari浏览器上submit按钮圆角bug
Dec 24 HTML / CSS
IE滤镜与CSS3效果(详细整理分享)
Jan 25 HTML / CSS
推荐10个CSS3 制作的创意下拉菜单效果
Feb 11 HTML / CSS
CSS3实现伪类hover离开时平滑过渡效果示例
Aug 10 HTML / CSS
详解Sticky Footer 绝对底部的两种套路
Nov 03 HTML / CSS
css3 中translate和transition的使用方法
Mar 26 HTML / CSS
html5 利用canvas手写签名并保存的实现方法
Jul 12 HTML / CSS
html5+svg学习指南之SVG基础知识
Dec 17 HTML / CSS
html5启动原生APP总结
Jul 03 HTML / CSS
一个基于canvas的移动端图片编辑器的实现
Oct 28 HTML / CSS
仅仅使用 HTML/CSS 实现各类进度条的方式汇总
Nov 11 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
开源SNS系统-ThinkSNS
2008/05/18 PHP
PHP使用Face++接口开发微信公众平台人脸识别系统的方法
2015/04/17 PHP
PHP实现批量重命名某个文件夹下所有文件的方法
2017/09/04 PHP
js实现屏蔽默认快捷键调用自定义事件示例
2013/06/18 Javascript
JQuery实现鼠标移动到图片上显示边框效果
2014/01/09 Javascript
js动态移动滚动条至底部示例代码
2014/04/24 Javascript
jQuery使用$.each遍历json数组的简单实现方法
2016/04/18 Javascript
angular框架实现全选与单选chekbox的自定义
2017/07/06 Javascript
vue.js框架实现表单排序和分页效果
2017/08/09 Javascript
Vue.js分页组件实现:diVuePagination的使用详解
2018/01/10 Javascript
vue.js数据绑定操作详解
2018/04/23 Javascript
Vue引入jquery实现平滑滚动到指定位置
2018/05/09 jQuery
Angular4 组件通讯方法大全(推荐)
2018/07/12 Javascript
vue2.0项目集成Cesium的实现方法
2019/07/30 Javascript
javascript绘制简单钟表效果
2020/04/07 Javascript
[00:03]DOTA2新版本PA至宝展示
2014/11/19 DOTA
Python ftp上传文件
2016/02/13 Python
Python入门_浅谈数据结构的4种基本类型
2017/05/16 Python
Python3 伪装浏览器的方法示例
2017/11/23 Python
django 实现编写控制登录和访问权限控制的中间件方法
2019/01/15 Python
Python调用百度根据经纬度查询地址的示例代码
2019/07/07 Python
python Pandas如何对数据集随机抽样
2019/07/29 Python
浅谈Python的方法解析顺序(MRO)
2020/03/05 Python
在python中修改.properties文件的操作
2020/04/08 Python
python爬虫容易学吗
2020/06/02 Python
如何在 Matplotlib 中更改绘图背景的实现
2020/11/26 Python
HTML5 实现图片上传预处理功能
2020/02/06 HTML / CSS
SEPHORA新西兰官方网站:购买化妆品和护肤品
2016/12/02 全球购物
医学实习生自我鉴定
2013/12/12 职场文书
学生打架检讨书1000字
2014/01/16 职场文书
关于期中考试的反思
2014/02/02 职场文书
心理健康活动总结
2014/04/30 职场文书
三严三实对照检查材料范文
2014/09/23 职场文书
钱学森观后感
2015/06/04 职场文书
redis内存空间效率问题的深入探究
2021/05/17 Redis
Maven学习----Maven安装与环境变量配置教程
2021/06/29 Java/Android