CSS选择器中nth-child和nth-type-child的区别

在CSS里选择父元素下的第几个子元素我们可以用的方法有nth-child 和nth-of-type,刚开始用的时候觉得这两个应该效果的用法应该是一样的,但是为什么CSS会定义两个一样的选择器呢?今天我来讲讲自己的见解,不喜勿喷;

现在来谈谈他们之间的差别:

代码结构如下(1):

<section>
    <p>第1个</p>
    <p>第2个</p>
    <p>第3个</p>
    <p>第4个</p>
</section>

我们现在使用两种方法来测试:

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

效果:

效果显而易见

现在试一试nth-of-type:

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

毋庸置疑,在第一种结构下,这两种选择器都可以很好的选择到第二个元素。好那么接下来我们来试试第二种结构:

<section>
    <div>哈哈哈</div>
    <div>呵呵呵</div>
    <div>嘻嘻嘻</div>
    <p>第1个</p>
    <p>第2个</p>
    <p>第3个</p>
    <p>第4个</p>
</section>

首先我们来试一试nth-of-type的效果:

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

效果:

ok接下来我们来看看nth-type的效果:

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

效果:

看到这种结果,大家应该知道他们俩的区别在哪里了吧?

第一种father-ele ele:nth-child

咱们单单从字面上来理解:father-ele元素下的ele元素的第n个元素。限制性挺强的,有位置限定,有元素限定,还有在父元素结构里的位置限定,那么咱们来分析一下刚才的代码:

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

为什么这个样式并没有实现:再来看一下代码结构

<section>
    <div>哈哈哈</div>
    <div>呵呵呵</div>
    <div>嘻嘻嘻</div>
    <p>第1个</p>
    <p>第2个</p>
    <p>第3个</p>
    <p>第4个</p>
</section>

ok,现在我来组织一下我的语言,哈哈。

我们来分析一下这个html结构,section下有7个子元素,排行第二的是一个div内容是呵呵呵。

现在来看css代码:他是要找,section地下的第二个元素,还要是p元素,但是呢,这里不满足条件,所以就没有样式的改变。(大家懂我什么意思了吗)

ok我们来看下一种:

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

其实哈,差别就在type上:

这个代码的意思是什么呢,1:section下的p元素,ok找到了,有两个。2:第二个p元素。ok找到了,干掉它,bingo样式改变了。

nth-of-type和nth-child的最大区别是什么呢,就是一个type的区别,一个关注的子元素的位置,一个多了一个类型的限制。

总结:

可能我的语言让大家搞得有点艰涩难懂,哎,我还是一个前端的小鸟,等我到变成一个老鸟的时候可能我说的话会更加透彻,希望可以帮助到大家,谢谢

时间: 2024-09-27 00:05:27

CSS选择器中nth-child和nth-type-child的区别的相关文章

ABAP中TYPES与DATA、TYPE与LIKE 区别

1.TYPES与DATA区别: TYPES是用来自定义某种类(型)的,需(用DATA语句)实例化以后才可以使用 DATA 是用来声明基本类型数据对象(实例变量)的,对于用DATA直接定义的结构体对象(不参照其它结构类型) 参照自定义类型生成新数据语法格式如下:TYPES | DATA  ...... TYPE type1 .......        ''type1 代表程序内部类型 参照程序中已经声明的数据对象生成新数据语法格式如下:TYPES | DATA ...... LIKE dobj

css 选择器中的正则表达式

正则表达式在任何语言中都有使用,只是使用的形式不一样而已 css也是一门语言,也有自己的正则表达式 正则表达式中的一些通用规则: 1 ^ 表示字符串开始位置匹配 2 $表示字符串结束为止匹配 3 *表示字符串任意位置匹配 4 i表示字符串匹配不区分大小写 5 g 表示字符串全局匹配 css属性选择器与正则表达式: 1 [attr="val"] 选择attr属性值只为val的元素<div attr="val"/> 2[attr]选择有attr这个属性的元素

css选择器中:first-child与:first-of-type的区别

:first-child选择器是css2中定义的选择器,从字面意思上来看也很好理解,就是第一个子元素.比如有段代码: p:first-child  匹配到的是p元素,因为p元素是div的第一个子元素: h1:first-child  匹配不到任何元素,因为在这里h1是div的第二个子元素,而不是第一个: span:first-child  匹配不到任何元素,因为在这里两个span元素都不是div的第一个子元素: 然后,在css3中又定义了:first-of-type这个选择器,这个跟:first

关于伪类选择器中一个冒号和两个冒号的区别

在平时工作中用到伪类选择器的时候一个冒号和两个冒号貌似都是可以的,所以两者到底有什么区别呢,我们先来看下W3C关于CSS3选择器的规范中有一段描述: A pseudo-element is made of two colons (::) followed by the name of the pseudo-element. This :: notation is introduced by the current document in order to establish a discrimi

python中pyquery库的css选择器实战解析

1.pyquery部分选择器解释 """pyquery的CSS选择器方法""" from pyquery import PyQuery html = """ <div id="container"> <table class="tablelist" cellpadding="0" cellspacing="0">

【CSS】使用CSS选择器

CCS选择器的作用是找出某类元素.以便使我们使用style元素或者外部样式表对这类元素设置样式. 1.使用CSS基本选择器 有些选择器使用起来非常简单,我们把这部分选择器称为基本选择器(basic selector).开发人员可使用这类选择器在文档中进行比较宽泛的选择,也可以将其看作结合多种选择器进行特殊选择的基础. 1.1 选择所有元素 通用选择器匹配文档中的所有元素.它是最基本的选择器,不过使用很少,因为匹配过于广泛. 下面代码是一个使用通用选择器的样式示例: <!DOCTYPE html>

这 30 类 CSS 选择器,你必须理解!

CSS 选择器是一种模式,用于选择需要添加样式的元素.平时使用最多也是最简单的就是 #id..class 和标签选择器,在 CSS 中还有很多更加强大更加灵活的选择方式,尤其是在 CSS3 中,增加了很多新的选择器,使得选择元素更加便捷,所以必须理解这些选择器,只有先理解了,多用几次,自然而然就记住了. 1.* [CSS2] 通配符,选择页面所有元素. 1 *{ 2 margin:0; 3 padding:0; 4 } 上面代码的作用是把页面上所有元素的内外边距设置为 0,这是最基本的清除默认 

CSS选择器效率问题

今天学习了CSS各类选择器,对其效率问题有些疑问,故总结了一些学习笔记 有很多人都忘记了,或在简单的说没有意识到,CSS在我们手中,既能很高效,也可以变得很低能.这很容易被忘记,尤其是当你意识到你会的太少,CSS代码效率很低的时候. 下面的规则只真正被应用到那些速度要求很高,有成百上千的DOM元素被绘制在页面上的大型网站.但是,实践出真理,这和你是在创建下一个Facebook,还是写一个本地的展示页面都没有关系,多知道一点总是好的. CSS选择器: 对我们大多数人来说,CSS选择器并不陌生.最基

第十三章 CSS选择器(下)

第 13章  CSS选择器[下] 学习要点: 1.伪类选择器总汇 2.结构性伪类选择器 3.UI伪类选择器 4.动态伪类选择器 5.其他伪类选择器 本章主要探讨 HTML5中  CSS选择器中的伪类选择器,和伪元素选择器一样,面向某种共同特征来选择元素. 一.伪类选择器总汇 伪类选择器分为四种类型:结构性伪类.UI伪类.动态伪类和其他伪类选择器 二.结构性伪类选择器 结构性伪类选择器能够根据元素在文档中的位置选择元素.这类元素都有一个前缀(:). 1.根元素选择器 :root  { border