ele:nth-of-type(n)  为什么叫 of-type ,就是说它是以“type”来区分的,也就是说ele:nth-of-type(n)指的是父元素下第n个ele元素。

ele:nth-child(n)      指的是父元素下第n个元素且这个元素是ele,若没有,则选择失败。

举例:

  1. <style>
  2. .div-parent span:nth-child(2){
  3. color:red;
  4. }
  5. .div-parent span:nth-of-type(2){
  6. color:yellow;
  7. }
  8. </style>
  9.  
  10. <div class="div-parent">
  11. <p>这是段落P</p>
  12. <span>这是span1</span>
  13. <span>这是span2</span>
  14. </div>

结果为:

这是段落P

这是span1 这是span2

说明:

span:nth-child(2)   选择的是所有子元素中的第二个元素,这个元素必须是span

span:nth-of-type(2)  选择的是所有的span子元素中的第二个元素。

如果在nth-child 和 nth-of-type前不指定标签呢?

举例:

  1. <style>
  2. .div-parent :nth-child(2){
  3. color:red;
  4. }
  5. .div-parent :nth-of-type(2){
  6. color:yellow;
  7. }
  8. </style>
  9.  
  10. <div class="div-parent">
  11. <p>这是段落P1</p>
  12. <span>这是span1</span>
  13. <span>这是span2</span>
  14. <p>这是段落P2</p>
  15. </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...个

特别说明下面这个例子:

  1. <style>
  2. .div-parent .item:nth-of-type(2){
  3. color:yellow;
  4. }
  5. </style>
  6.  
  7. <div class="div-parent">
  8. <p>这是段落P1</p>
  9. <span>这是span1</span>
  10. <span class="item">这是span2</span>
  11. </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 的区别的更多相关文章

  1. 现代C++之理解模板类型推断(template type deduction)

    理解模板类型推断(template type deduction) 我们往往不能理解一个复杂的系统是如何运作的,但是却知道这个系统能够做什么.C++的模板类型推断便是如此,把参数传递到模板函数往往能让 ...

  2. 简单理解Struts2中拦截器与过滤器的区别及执行顺序

    简单理解Struts2中拦截器与过滤器的区别及执行顺序 当接收到一个httprequest , a) 当外部的httpservletrequest到来时 b) 初始到了servlet容器 传递给一个标 ...

  3. 【转】为什么我们都理解错了HTTP中GET与POST的区别

    GET和POST是HTTP请求的两种基本方法,要说它们的区别,接触过WEB开发的人都能说出一二. 最直观的区别就是GET把参数包含在URL中,POST通过request body传递参数. 你可能自己 ...

  4. ASP.NET控件<ASP:Button /> html控件<input type="button">区别联系

    ASP.NET控件<ASP:Button />-------html控件<input type="button">杨中科是这么说的:asp和input是一样 ...

  5. Index 和 Type 的区别

    原文: Index vs. Type By Adrien Grand 译者: fengchang 对于 ES 的新用户来说,有一个常见的问题:要存储一批新的数据时,应该在已有 index 里新建一个 ...

  6. vue系列---理解Vue中的computed,watch,methods的区别及源码实现(六)

    _ 阅读目录 一. 理解Vue中的computed用法 二:computed 和 methods的区别? 三:Vue中的watch的用法 四:computed的基本原理及源码实现 回到顶部 一. 理解 ...

  7. 深入理解Javascript中构造函数和原型对象的区别

    在 Javascript中prototype属性的详解 这篇文章中,详细介绍了构造函数的缺点以及原型(prototype),原型链(prototype chain),构造函数(constructor) ...

  8. 理解Java中字符流与字节流的区别

    1. 什么是流 Java中的流是对字节序列的抽象,我们可以想象有一个水管,只不过现在流动在水管中的不再是水,而是字节序列.和水流一样,Java中的流也具有一个“流动的方向”,通常可以从中读入一个字节序 ...

  9. 5分钟理解iaas paas saas三种云服务区别

    随着云计算的大热,向我咨询云计算相关问题的童鞋也越来越多,其中最近问的比较多的一个问题便是云计算中的pass是什么意思?整好今天有空,统一给大家解释下pass是什么意思?和Iass.Sass之间有什么 ...

  10. const type& 与 type& 的区别

    const type& 与 type& 是C/C++编程中容易混淆的两个知识点,现在以 cont int& 与 int& 为例讲解: 1.int& 讲解 int ...

随机推荐

  1. javascript图片加载完成前显示loading图片

    <html> <title>图片预加载</title> <body> <script> //判断浏览器 var Browser=new Ob ...

  2. C语言关于数据类型转换

    自动类型转换 自动类型转换就是编译器默默地.隐式地.偷偷地进行的数据类型转换,这种转换不需要程序员干预,会自动发生. 1) 将一种类型的数据赋值给另外一种类型的变量时就会发生自动类型转换,例如: ; ...

  3. es6的数组操作

    //foreach 迭代 var arr = [1, 2, 3]; var sum = 0; arr.forEach(function(value, index, array) { console.l ...

  4. Istio VirtualService 虚拟服务

    概念及示例 VirtualService 描述了一个或多个用户可寻址目标到网格内实际工作负载之间的映射 . 虚拟服务让您配置如何在服务网格内将请求路由到服务,这基于 Istio 和平台提供的基本的连通 ...

  5. JZOJ 4611. 【NOI2016模拟7.11】接水问题 (贪心+A*+可持久化线段树)

    Description: https://gmoj.net/senior/#main/show/4611 题解: 先把A从大到小排序,最小的由排序不等式显然. 考虑类似第k短路的A*的做法. 定义状态 ...

  6. C#基础之方法的重载

    在C#语言中,方法的重载作用非常大,但是使用重载需要注意方法的签名,必须有一种要不一样,具体指的是: 1.方法的返回值类型 2.方法的形参类型 3.形参类型的顺序 4.形参的个数 4.泛型的类型< ...

  7. 读Pyqt4简介,带你入门Pyqt4 _001

    PyQt是用来创建GUI应用程序的工具包,它把Python和成功的Qt绑定在一起,Qt库是这个星球上最强大的库之一,如果不是最强大的话. PyQt作为一组Python模块的实现.有超过300个类和超过 ...

  8. 【汇总】 为园友写的皮肤制作工具 awescnb

    Awescnb, awesome cnblog. 简介 可能许多初来乍到的新手会被博客园经典的风格劝退,或者您是一个老园友,需要为您的博客定制一些功能(例如宣传公众号,文章目录.或者插入几个捐助二维码 ...

  9. Kubernetes笔记(四):详解Namespace与资源限制ResourceQuota,LimitRange

    前面我们对K8s的基本组件与概念有了个大致的印象,并且基于K8s实现了一个初步的CI/CD流程,但对里面涉及的各个对象(如Namespace, Pod, Deployment, Service, In ...

  10. Java实现 LeetCode 318 最大单词长度乘积

    318. 最大单词长度乘积 给定一个字符串数组 words,找到 length(word[i]) * length(word[j]) 的最大值,并且这两个单词不含有公共字母.你可以认为每个单词只包含小 ...