首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

IT兄弟连 HTML5教程 CSS3揭秘 CSS选择器2

4 结构性伪类选择器

在学习结构性伪类选择器之前,先了解两个概念:伪类选择器和伪元素选择器。伪类选择器是CSS中已经定义好的选择器,不能随便命名。常用的伪类选择器是使用在a元素上的几种,如a:link、a:visited、a:hover、a:active。而伪元素选择器并不是针对真正的元素使用的选择器,而是针对CSS中已经定义好的伪元素使用的选择器,CSS中有4种伪元素选择器,即first-line、first-letter、before、after。例如,p:first-line,li:after。而在CSS3中引入的结构性伪类选择器的共同特征是允许开发者根据文档树中的结构来指定元素的样式,以下分类进行介绍,如表1~表6所示。

表1 4个最基本的结构性伪类选择器root、not、empty和target

表2 选择器first-child、last-child、nth-child、nth-last-child

表3 选择器nth-of-type、nth-last-of-type

表4 循环使用样式

表5 选择器only-child、only-of-type

表6 CSS3中与用户界面有关的伪类选择器

5、nth-child与nth-of-type的区别:

:nth-child和:nth-of-type都是CSS3中的结构性伪类选择器,其作用近似却又不完全一样,对于不熟悉的人对其可能不是很容易区分。下面就将介绍两者的不同,以便于大家正确灵活使用这两类选择器。

先看一个简单的的实例,首先得html部分:

我是段落1

我是段落2

两个选择器相对应的CSS代码如下:

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

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

上面这个例子中,这两个选择器所实现的效果是一致的,第二个p标签的文字变成了红色,如图1所示:

尽管上面两个例子的最后效果一致,但是两个选择器之间存在差异是必然的。

对于:nth-child选择器,意味着选择一个元素满足条件:

1.这是个段落元素

2.这是父标签的第二个孩子元素

图1 伪元素选择器

对于:nth-of-type选择器,意味着选择一个元素如果:

1、选择父标签的第二个段落子元素

我们把上面的实例稍作修改,就可以看到这两个选择器之间的差异表现了,如下HTML代码:

我是标题

我是段落1

我是段落2

同样,使用上面的CSS代码:

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

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

这时候两个选择器所渲染的结果就不一样了。

p:nth-child(2)没有达到原意,其渲染的结果不是第二个p标签文字变红,而是第一个p标签,也就是父标签的第二个子元素,效果如图2所示:

p:nth-of-type(2)达到了我们想要的结果,其把希望渲染的第二个p标签染红了,效果如图3所示:

图2 伪元素选择器

图3 伪元素选择器

对照上面两个选择器的语义,此处的效果表现差异不难理解。nth-child与nth-of-type的区别也可以看出。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20191104A03M1700?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券