“选择器引擎到底是朝哪个方向读取的?”
传统观点认为 CSS 选择器引擎通常从右向左读取。但是,计算的精确方向可能会根据浏览器和实现的不同而有所不同。
通常,浏览器从右到左计算选择器以导航组合器。例如,在选择器部分>第二分区> div.third,引擎会先检查某个元素是否为 div.third,然后再检查其父元素是否为 div.second 并进一步向上。
关于 .name 和 div.name 之间的性能比较,确切的顺序不同浏览器的评估结果可能会波动且差异很大。即使理论性能在很大程度上也依赖于实现。
尽管跨组合器进行从右到左的评估,但此顺序不太可能扩展到复合选择器中的简单选择器级别。例如,在选择器 div:hover[data-foo="bar"].name:nth-child(5)::after 中,没有设置保证将以严格从右到左的方式检查条件.
相反,出于性能原因,某些类型的简单选择器可能会被优先考虑。例如,通常首先处理 ID 选择器。因此,无论选择器写为 div#foo.bar:first-child 还是 div.bar:first-child#foo,Gecko(Firefox 使用)都会首先评估 ID 和类,无论它们的位置如何。
最终,很难预测哪个选择器在给定的上下文中执行得更快。性能可能因文档结构、实现甚至不同浏览器而异。
以上是选择器引擎到底读取哪个方向?的详细内容。更多信息请关注PHP中文网其他相关文章!