问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

为什么浏览器解析CSS选择器的方式是从右到左

发布网友 发布时间:2022-04-22 01:49

我来回答

1个回答

热心网友 时间:2022-04-22 03:18

CSS 的后代选择器本身就是一种在标准里面不那么推荐的方式。

首先,对浏览器来说,ID 选择器 #xx 是最快的,其次是 class 选择器、html 元素选择器等。

假如 DOM 的结构如上图,匹配规则是 .mod-nav h3 span。
若从左向右的匹配,过程是:从 .mod-nav 开始,遍历子节点 header 和子节点 div,然后各自向子节点遍历。在右侧 div 的分支中,最后遍历到叶子节点 a ,发现不符合规则,需要回溯到 ul 节点,再遍历下一个 li-a,假如有 1000 个 li,则这 1000 次的遍历与回溯会损失很多性能。
再看看从右至左的匹配:先找到所有的最右节点 span,对于每一个 span,向上寻找节点 h3,由 h3再向上寻找 class=mod-nav 的节点,最后找到根元素 html 则结束这个分支的遍历。
很明显,两种匹配规则的性能差别很大。之所以会差别很大,是因为从右向左的匹配在第一步就筛选掉了大量的不符合条件的最右节点(叶子节点);而从左向右的匹配规则的性能都浪费在了失败的查找上面。
当然这是比较明显情况,如果在叶子上存在多个不符合条件的 span,从右向左的规则也会走一些弯路(这时就需要优化 CSS 选择器了)。但平均来说它还是更高效,因为大多时候,一个 DOM 树中,符合匹配条件的节点(如 .mod-nav h3 span)远少于不符合条件的节点。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
不想要淘宝原来的帐号,怎么办,可以注销吗~谢谢了,大神帮忙啊 蓝宝石HD6770显卡求鉴定,GPUZ检测数据如下: 健身60公斤,176身高的人,比较瘦,是不是即便经常锻炼,力气也不一定比胳膊... 农村土地什么情况不予发证?如何解决? 共工治水在前还是怒触不周山在前? 共工触山的故事 有什么类似漂流瓶的软件推荐 漂流瓶软件推荐 保险柜密码怎么改 保险柜密码正确但是打不开怎么办 西安水多少钱一顿 西安哪里可以买自来水 阿玛尼ar2447 900元是正品吗 数据库发生改变时怎么spring ehcache缓存 请教spring aop aspectJ表达式以及ehcache缓存清除 怎样在关闭浏览器的时候讲缓存清空 net.sf.ehcache.cache 问题描述: 定义类Invoice 来代表硬件商店内所卖产品的一张*。Invoice类应该包括4部分信息作为属性:编 provisional invoice是什么意思 COMMERCIAL INVOICE要包括什么内容 创世纪37到50章约瑟的生命中哪些值得我们学习和效仿的地方? send me the invoice with totals 请帮我翻译一段授权书文本 求外企白领翻译(英文),经销商价格政策,完全看不懂 为什么唱吧里有修音的伴奏都卡的不能唱 翻译,关于佣金 此次货物以发票价值为计价基础 英文 1900美元用英语怎么说 国外卖车的网站上,汽车的价格,MSRP我知道是厂商建议价格,invoice是什么价格呢?是含税的价格吗? ap invoice prices是什么意思 请问invoice中单价1.4欧元怎么填写? gross invoice price是什么意思 invoice price是什么意思 如何去掉EhCache的这些警告信息 ehcache时如何持久化数据到磁盘,并且在应用 mt5外汇平台上得币市出金后会被银行冻结嘛 有关温暖的名人故事 跪求有关温暖的名人事例!急用!不要什么孝顺的! 绑定了别人的手机号会怎样? 温暖的名人事例 外汇平台MT5中这两个是什么意思? 硬脂酸镁粉尘爆炸极限 求助,硫磺粉尘的爆炸下限是多少 感受生活中的温暖的名人事例 如果绑定别人的手机号怎么办? 外汇MT5 平台 deal 和order 有啥区别?deal histroy 和 order history 指的是什么? 温暖“阳光”充满爱,有哪些助人为乐的名人事迹让你记忆犹新? 粉尘爆炸是否一定存在爆炸上限浓度?请说明理由,万分感谢! 影响粉尘爆炸下限的因素 关于名人的一句温暖的话的小故事 为防止可燃性粉尘爆炸,可烀粉尘厚度不超过多少为宜 - 信息提示 手机管家和360哪个好用?