浏览器引擎从右到左匹配CSS选择器。因此,他们首先找到孩子,然后检查父母,看他们是否符合规则的其余部分。
- 为什么是这样?
- 只是因为规格说明了吗?
- 如果从左到右进行评估,是否会影响最终的布局?
对我来说,最简单的方法是使用元素数量最少的选择器。因此,ID优先(因为它们只能返回1个元素)。然后,可能是类或具有最少节点数的元素-例如,页面上可能只有一个范围,因此请使用引用范围的任何规则直接转到该节点。
这是一些支持我的主张的链接
- http://code.google.com/speed/page-speed/docs/rendering.html
- https://developer.mozilla.org/en/Writing_Efficient_CSS
听起来这样做是为了避免查看父母的所有子代(可能很多),而不是查看必须是一个的所有子代。即使DOM很深,它也只会在每个级别查看一个节点,而不是RTL匹配中的多个节点。评估CSS选择器LTR或RTL更容易/更快吗?
#foo
选择器需要匹配所有这些节点。jQuery可以选择说$(“#foo”)将始终只返回一个元素,因为它们使用自己的规则定义自己的API。但是浏览器需要实现CSS,CSS表示要使用给定ID匹配文档中的所有内容。
querySelectorAll
)。在其他情况下,使用Sizzle。Sizzle不匹配多个ID,但QSA匹配(AYK)。所采用的路径取决于选择器,上下文以及浏览器及其版本。jQuery的Query API使用了我所谓的“本机优先,双重方法”。我写了一篇关于它的文章,但是它失败了。虽然您可能会在这里找到:fortybelow.ca/hosted/dhtmlkitchen/JavaScript-Query-Engines.html