文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

泪目了!CSS Nth-child伪类终于支持了Of 关键词

2024-11-30 16:11

关注

介绍一个关于CSS  :nth-child 选择器的新特性。

不知道大家有没有碰到过这样的问题或者需求,从一个特殊的、不可更改的​​HTML​​结构中选择出你想要的元素,比如



段落1


段落1


段落2


段落2


段落2


段落3

请问,如何选择第2个.p2标签,如下:

如果不借助 JS,好像并不是很容易?今天一起来探讨这样一个问题

一、nth-child 和 nth-of-type

选择第几个元素可以想到nth-child和nth-of-type。

这两个的区别是,nth-child​代表的是第几个子元素,而nth-of-type代表的是该标签类型的第几个元素。

直接看例子吧。

:nth-child(2){
color: red
}

选中第2个元素。

然后是nth-of-type。

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

选择每种元素(h1元素和p元素)的第2个。

如果限制一下类名,是不是好像可以实现我们想要的效果?

.p2:nth-of-type(2){
color: red
}

结果...什么都没选中。

为什么会这样呢?其实.p2:nth-of-type(2)​可以拆分为:nth-of-type(2)和.p2。

:nth-of-type(2)​可以选中每种元素的第2个,也就是.h2和.p1​,再结合.p2选择器,注意,这里是“且”的关系,由于两者没有同时满足的,所以什么都没选中,示意如下:

好像并不是我们想象的那样?那有没有办法在所有的.p中再选择第2个呢?

二、nth-child 中的 of 关键词

没错,of 关键词就是为了实现这样的功能而产生的,或者说是弥补了nth-child和nth-of-type的不足。

:nth-child() takes a single argument that describes a pattern for matching element indices in a list of siblings. Element indices are 1-based.

通俗意思就是先通过 of 后面的选择器筛选元素,然后再匹配第几个。

:nth-child(<nth> [of <complex-selector-list>]?) {

}

比如要实现选择第2个.p2,可以直接这样实现。

:nth-child(2 of .p2){
color: red
}

效果如下,刚好是第2个.p2。

原理是这样的。

是不是非常容易?

三、还可以更灵活

现在在原先的 dom 中插入其他干扰元素,比如这样的。

<h1 class="h1">1h1>
<p class="p1">段落1p>
<p class="p1">段落1p>
<p class="p2">段落2p>
<p class="p3">段落3p>
<h2 class="p2">段落2h2>
<p class="p2">段落2p><!--想选中这个-->
<p class="p3">段落3p>

那么,现在如何选择第2个.p2并且标签为p的元素呢?

如果用of关键词,可以很轻松的实现,只不过需要注意筛选条件p.p2。

:nth-child(2 of p.p2){
color: red
}

这样就会跳过h2.p2元素,如下:

四、兼容性和总结

其实这个关键词早在 2015 年就已经在Safari​上支持了(Safari终于雄起了一回),但直到最近才在Chrome 111上正式支持,足足落后了 8 年啊,如下:

其实没什么好总结的,只需要记住一点,通过of可以提前筛选元素,然后在匹配第 N 个元素,弥补了nth-child和nth-of-type的不足。虽然目前还不能大规模使用,但是一些实验项目或者Electron项目还是可以尝试一下的。

来源:前端侦探内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯