登录  /  注册
首页 > web前端 > css教程 > 正文

nth-child和nth-of-type的简单比较

青灯夜游
发布: 2018-11-16 12:47:52
原创
2348人浏览过

本篇文章给大家带来的内容是简单比较一下nth-child和nth-of-type,让大家了解nth-child和nth-of-type分别是如何工作的。有一定的参考价值,有需要的朋友可以参考一下,希望对你们有所帮助。

nth-child()和nth-of-type()都是css的“结构”伪类选择器,这些伪类选择器允许我们基于文档树中的信息选择元素,这些元素通常不能由其他简单选择器表示。

就nth-child()和nth-of-type()来说,额外信息是元素在文档树中相对于其父元素和兄弟元素的位置。 尽管这两个伪类非常相似,但它们的工作方式却截然不同。

nth-child()是怎样工作的?

nth-child()伪类用于根据数字匹配元素,该数字表示元素在其兄弟元素中的位置。更具体地说,数字表示文档树中元素(减去1)之前存在的兄弟姐妹的数量。

这个数表示为函数a+b,其中n是索引,a和b是我们通过的任何整数。例如,为了选择每一个元素,我们可以编写以下任何一个:

:nth-child(1n+0) { /* 样式 */ }
:nth-child(n+0) { /* 样式 */ }
:nth-child(1n) { /* 样式 */ }
登录后复制

除了使用这个函数,我们还可以传递一个整数,例如 :nth-child(1),或者set关键字,odd(奇数)或者even(偶数)。这些关键字是写出用于选择每个奇数或偶数元素的函数符号的备选方案。

:nth-child(odd) { /* 奇数元素的样式 */ }
:nth-child(2n+1) { /* 奇数元素的样式 */ }

:nth-child(even) { /* 偶数元素的样式 */ }
:nth-child(2n+0) { /* 偶数元素的样式 */ }
登录后复制

:nth-child()单独使用时,可以很容易地预测选择哪个元素。例如,使用此标记:

<div class="example">
	<p>This is a <em>paragraph</em>.</p>
	<p>This is a <em>paragraph</em>.</p>
	<p>This is a <em>paragraph</em>.</p>
	<div>This is a <em>divider</em>.</div>
	<div>This is a <em>divider</em>.</div> <!-- 选择元素-->
	<p>This is a <em>paragraph</em>.</p>
	<p>This is a <em>paragraph</em>.</p>
	<div>This is a <em>divider</em>.</div>
	<p>This is a <em>paragraph</em>.</p>
	<div>This is a <em>divider</em>.</div>
</div>
登录后复制

如果我们想选择第五个元素div,我们可以简单地写下面的内容

.example :nth-child(5) { background: #ffdb3a; }
登录后复制

1.png

但是,当存在多种类型的元素时,可能会出现意外结果,并且我们需要将:nth-child()伪类与类型或类选择器组合在一起。例如,要再次选择相同的div元素,我们可能会尝试编写以下内容:

.example div:nth-child(2) { background: #ffdb3a; }
登录后复制

这段代码不起作用!

不起作用的原因是因为选择器所针对的元素实际上并不存在。使用上述选择器,将执行以下步骤

1、选择所有 .example的子元素

2、查找该列表中的第二个元素,无论其类型如何

3、检查该元素是否是div的类型

由于文档树中的第二个元素是段落,而不是div,因此不会选择任何内容。如果我们想要选择第二个div元素,我们将不得不使用nth-of-type()伪类。

nth-of-type()是怎样工作的?

nth-of-type()伪类,如nth-child()一样,是用于根据一个元素匹配一个元素。然而,它里面的数字表示元素的位置仅在其兄弟姐妹中具有相同元素类型的位置。

nth-of-type()里面的参数也可以表示为函数,或使用关键字even或odd。使用上面的示例标记,我们可以通过写入选择所有奇数段落:

.example p:nth-of-type(odd) { background: #ffdb3a; }
登录后复制

2.png

当我们使用此选择器时,将执行以下步骤:

1、选择.example的所有p类型子元素

2、仅创建这些元素的新列表

3、从列表中选择奇数

因此,我们现在可以选择.example的第二个div,即第五个孩子:

.example div:nth-of-type(2) { /* 样式 */ }
登录后复制

总结:以上就是本篇文的全部内容,希望能对大家的学习有所帮助。

以上就是nth-child和nth-of-type的简单比较的详细内容,更多请关注php中文网其它相关文章!

智能AI问答
PHP中文网智能助手能迅速回答你的编程问题,提供实时的代码和解决方案,帮助你解决各种难题。不仅如此,它还能提供编程资源和学习指导,帮助你快速提升编程技能。无论你是初学者还是专业人士,AI智能助手都能成为你的可靠助手,助力你在编程领域取得更大的成就。
相关标签:
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
最新问题
关于CSS思维导图的课件在哪? 课件
凡人来自于2024-04-16 10:10:18
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2024 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号