伪类选择器first-child误用
时间:2023-03-31 11:48:42
CSS
伪类选择器first-child误用背景最近遇到一个css伪类选择器的问题,困扰了我很久,因为我居然发现用法为自己想象的不一样,后来才发现自己搞错了,不由得惭愧。这里要介绍的解决过程是:first-child这个伪类,我想象中的用法是这样的:html代码部分:firstspan第二个span第三个span
css代码部分:.root>span:first-child{background:red;}最终页面效果:可以看到第一个span的背景是设置为红色。本来,用这种方式一直很好。我一直以为这个选择器选择的是第一个element元素,之前一直都是这么用的,从来没有出错过。但是直到最近遇到下面这种情况,才真正把我逼疯了。html代码部分:
firstdiv
firstspansecondspanthirdAspan 这时候想故技重施,用#root>span:first-child选中第一个span元素,发现无法选中。后来灵机一动,改成了这样:.root>:first-child{background:red;}发现div是彩色的:隐隐约约觉得自己明白了什么,于是赶紧点了破”前端圣经”网站-mdn,找到词条:first-child,内容开头说:很简单的内容,大意是我们的伪类代表一组兄弟元素first元素。伪类前面的标签类型只是一个筛选功能。看到这里,我们就可以理解这个选择器是这样工作的了。获取一组兄弟元素,然后从中获取第一个元素,然后判断这个元素是否与冒号前指定的元素类型相同。如果是,则选择该元素;否则,它不会被选中。如果用js来解释和描述这个逻辑,大概是这样的:tag){//Performsomeoperations}所以,到这里我完全明白了,原来我一直误解了两个css伪类:first-child和:nth-child()。那么怎样才能达到我想要的效果呢?不得不说mdn的网站排版绝对是用心的。正想打开搜索引擎搜索,看到侧边导航栏:下面的入口是:first-of-type,看起来有点像我要的伪类型选择器一样,所以我兴奋地点击了进去。简单翻译一下,这个伪类元素代表了一组兄弟元素中该类型元素的第一个元素。替换掉这个伪类后,终于达到了预期的效果:实现了一些基本的东西。刚开始学习的时候,由于经验不足,即使当时死记硬背,也可以说是一知半解的状态。而且后面在实际应用的过程中,如果达到了自己想要的效果,就不会回头看说明书了。可以说,这次犯下的小错误,也为我个人敲响了警钟。对于一些我们总认为自己掌握了,看起来很简单的东西,我们总是打消它们,回去复习。因此,当出现问题时,通常很难找出是什么原因导致了我们的沮丧。这大概就是我们常说的,当局者迷,旁观者清。如果我们能时时温习最基础的知识,那么相信对我们自身的成长大有裨益。相信每次复习,都会有不同的感悟。每次复习,您都会学到新东西。永远学习,永远是新的不是谎言。我相信,不同境界的人,看同一件事,会有不同的结果。否则,就会有佛教三界的说法。