深入理解 nth-child 和 nth-of-type 的区别
ele:nth-of-type(n) 为什么叫 of-type ,就是说它是以“type”来区分的,也就是说ele:nth-of-type(n)指的是父元素下第n个ele元素。
ele:nth-child(n) 指的是父元素下第n个元素且这个元素是ele,若没有,则选择失败。
举例:
<style>
.div-parent span:nth-child(2){
color:red;
}
.div-parent span:nth-of-type(2){
color:yellow;
}
</style> <div class="div-parent">
<p>这是段落P</p>
<span>这是span1</span>
<span>这是span2</span>
</div>
结果为:
这是段落P
这是span1 这是span2
说明:
span:nth-child(2) 选择的是所有子元素中的第二个元素,这个元素必须是span
span:nth-of-type(2) 选择的是所有的span子元素中的第二个元素。
如果在nth-child 和 nth-of-type前不指定标签呢?
举例:
<style>
.div-parent :nth-child(2){
color:red;
}
.div-parent :nth-of-type(2){
color:yellow;
}
</style> <div class="div-parent">
<p>这是段落P1</p>
<span>这是span1</span>
<span>这是span2</span>
<p>这是段落P2</p>
</div>
结果为:
这是段落P1
这是span1 这是span2
这是段落P2
说明:
:nth-child(2) 不管是否指定标签,:nth-child(2)选择的都是第二个子元素,只不过如果指定了标签,那第二个元素就必须是该标签元素,否则选择失败。
:nth-of-type(2) 它选中了两个元素,分别是父级.div-parent 下第二个p标签和第二个span标签,说明,:nth-of-type(2) 选择的是各个子类型标签的第二个元素。
最后,我们了解一下,:nth-child(n) 和 :nth-of-type(n) 括号中的n代表什么?
说明:
上述选择器中的n,可以是数字,关键字和公式
① 数字:前面举例已经说明了, 1就是第一个 、2就是第二个
② 关键字: odd 和 even 匹配下标是奇数或偶数的子元素关键字,第一个子元素下标是1,那odd就是第1,3,5,7...个子元素
③ 公式:就是一种算数表达式,表示周期,n是从0开始计数
比如 2n,就是下标是2的倍数的子元素,其实就等同于even
比如n+2,就是下标不小于2的子元素,其实就是第2,3,4,5,6...个
特别说明下面这个例子:
<style>
.div-parent .item:nth-of-type(2){
color:yellow;
}
</style> <div class="div-parent">
<p>这是段落P1</p>
<span>这是span1</span>
<span class="item">这是span2</span>
</div>
结果:
这是段落P1
这是span1 这是span2
说明:
.item:nth-of-type(2) ,指的是span2,就等同于 span:nth-of-type(2)。而 .item:nth-of-type(1)是无效的,选择失败。因为span1,没有这个类.item
所以说,如果 :nth-of-type(2) 前指定的元素是类,选择的是指定类对应的标签下的第二个元素,且这个元素的类是指定类。
深入理解 nth-child 和 nth-of-type 的区别的更多相关文章
- 现代C++之理解模板类型推断(template type deduction)
理解模板类型推断(template type deduction) 我们往往不能理解一个复杂的系统是如何运作的,但是却知道这个系统能够做什么.C++的模板类型推断便是如此,把参数传递到模板函数往往能让 ...
- 简单理解Struts2中拦截器与过滤器的区别及执行顺序
简单理解Struts2中拦截器与过滤器的区别及执行顺序 当接收到一个httprequest , a) 当外部的httpservletrequest到来时 b) 初始到了servlet容器 传递给一个标 ...
- 【转】为什么我们都理解错了HTTP中GET与POST的区别
GET和POST是HTTP请求的两种基本方法,要说它们的区别,接触过WEB开发的人都能说出一二. 最直观的区别就是GET把参数包含在URL中,POST通过request body传递参数. 你可能自己 ...
- ASP.NET控件<ASP:Button /> html控件<input type="button">区别联系
ASP.NET控件<ASP:Button />-------html控件<input type="button">杨中科是这么说的:asp和input是一样 ...
- Index 和 Type 的区别
原文: Index vs. Type By Adrien Grand 译者: fengchang 对于 ES 的新用户来说,有一个常见的问题:要存储一批新的数据时,应该在已有 index 里新建一个 ...
- vue系列---理解Vue中的computed,watch,methods的区别及源码实现(六)
_ 阅读目录 一. 理解Vue中的computed用法 二:computed 和 methods的区别? 三:Vue中的watch的用法 四:computed的基本原理及源码实现 回到顶部 一. 理解 ...
- 深入理解Javascript中构造函数和原型对象的区别
在 Javascript中prototype属性的详解 这篇文章中,详细介绍了构造函数的缺点以及原型(prototype),原型链(prototype chain),构造函数(constructor) ...
- 理解Java中字符流与字节流的区别
1. 什么是流 Java中的流是对字节序列的抽象,我们可以想象有一个水管,只不过现在流动在水管中的不再是水,而是字节序列.和水流一样,Java中的流也具有一个“流动的方向”,通常可以从中读入一个字节序 ...
- 5分钟理解iaas paas saas三种云服务区别
随着云计算的大热,向我咨询云计算相关问题的童鞋也越来越多,其中最近问的比较多的一个问题便是云计算中的pass是什么意思?整好今天有空,统一给大家解释下pass是什么意思?和Iass.Sass之间有什么 ...
- const type& 与 type& 的区别
const type& 与 type& 是C/C++编程中容易混淆的两个知识点,现在以 cont int& 与 int& 为例讲解: 1.int& 讲解 int ...
随机推荐
- eclipse——管理远程资源的缓存,例如从Internet下载的资源。
原文:Manage the cache of remote resources,such as those downloaded from the internet.
- PHP时间操作
PHP中对日期进行处理常用的几个函数如下: date(format,timestamp): 把时间戳格式化为更易读的日期和时间 format : 必需,规定输出日期字符串的格式 timestamp : ...
- WebStorm 2019.3.1 破解 永久使用 亲测100%成功
声明:本教程 WebStorm 破解补丁.激活码均收集于网络,请勿商用,仅供个人学习使用,如有侵权,请联系作者删除. 前言 今天问公司前端的美眉,你的激活码哪里来的,她说淘宝买的,我说给我用一下,当时 ...
- Emiya家今天的饭 NOIP2019 (CSP?) 类DP好题 luoguP5664
luogu题目传送门! 首先,硬求可行方案数并不现实,因为不好求(去年考场就这么挂的,虽然那时候比现在更蒟). 在硬搞可行方案数不行之后,对题目要求的目标进行转换: 可行方案数 = 总方案数 - 不合 ...
- [书籍分享]0-006.App营销解密:移动互联网时代的营销革命
封面 内容简介 如何在移动互联网上推广和销售自己的产品?如何通过移动互联网为顾客提供服务?如何在移动互联网上树立和传播自己的品牌?这几乎是当下所有互联网企业和传统企业都在思考的问题,企业要想在移动互联 ...
- MVC案例之新增与修改Customer
新增Customer 添加的流程Add New Customer 超链接连接到 newcustomer.jsp新建 newcustomer.jsp: 在 CustomerServlet 的 addCu ...
- ASP.NET Core WebAPI实现本地化(单资源文件)
在Startup ConfigureServices 注册本地化所需要的服务AddLocalization和 Configure<RequestLocalizationOptions> p ...
- Docker 容器优雅终止方案
原文链接:Docker 容器优雅终止方案 作为一名系统重启工程师(SRE),你可能经常需要重启容器,毕竟 Kubernetes 的优势就是快速弹性伸缩和故障恢复,遇到问题先重启容器再说,几秒钟即可恢复 ...
- 对象调用 push 方法
/* Array.prototype.push = function A(val) { this[this.length] = val; // =>this.length 在原来的基础上加1 r ...
- Java实现 LeetCode 380 常数时间插入、删除和获取随机元素
380. 常数时间插入.删除和获取随机元素 设计一个支持在平均 时间复杂度 O(1) 下,执行以下操作的数据结构. insert(val):当元素 val 不存在时,向集合中插入该项. remove( ...