深入理解 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 ...
随机推荐
- Python中ThreadLocal的理解与使用
一.对 ThreadLocal 的理解 ThreadLocal,有的人叫它线程本地变量,也有的人叫它线程本地存储,其实意思一样. ThreadLocal 在每一个变量中都会创建一个副本,每个线程都可以 ...
- 利用Jackson封装常用JsonUtil工具类
在日常的项目开发中,接口与接口之间.前后端之间的数据传输一般都是使用JSON格式,那必然会封装一些常用的Json数据转化的工具类,本文讲解下如何利用Jackson封装高复用性的Json转换工具类. 转 ...
- PHP SESSION 操作
Session的声明与使用 Session的设置不同于Cookie,必须先启动,在PHP中必须调用session_start().session_start()函数的语法格式如下: Bool sess ...
- 剑指Offer之裴波那契数列
题目描述 大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0,第1项是1). n<=39 解法1:递归解法 public int Fibonacc ...
- Longest Mountain in Array 数组中的最长山脉
我们把数组 A 中符合下列属性的任意连续子数组 B 称为 “山脉”: B.length >= 3 存在 0 < i < B.length - 1 使得 B[0] < B[1] ...
- MySQL死锁系列-常见加锁场景分析
在上一篇文章<锁的类型以及加锁原理>主要总结了 MySQL 锁的类型和模式以及基本的加锁原理,今天我们就从原理走向实战,分析常见 SQL 语句的加锁场景.了解了这几种场景,相信小伙伴们也能 ...
- Java中的自动装箱拆箱
Java中的自动装箱拆箱 一.自动装箱与自动拆箱 自动装箱就是将基本数据类型转换为包装类类型,自动拆箱就是将包装类类型转换为基本数据类型. 1 // 自动装箱 2 Integer total = 90 ...
- TCP 半连接队列和全连接队列满了会发生什么?又该如何应对?
前言 网上许多博客针对增大 TCP 半连接队列和全连接队列的方式如下: 增大 TCP 半连接队列的方式是增大 /proc/sys/net/ipv4/tcp_max_syn_backlog: 增大 TC ...
- no-strings-attached
0x01 拿到程序,直接IDA放进去看一下,结果如图: 我们发现main中有四个函数,我们一个一个进去,经过分析之后,发现authenticate();是关键函数,所以,接下来我们进去看看. void ...
- mybatis精讲(七)--动态sql
目录 常用标签 if元素 choose元素 trim元素 forearch bind元素 在我们传统的开发中我们会通过拼接sql达到数据库的操作.java中的拼接不仅效率低下而且代码很长不易维护.而M ...