css选择器引擎的具体实现

时间:2011-07-20 09:01:17

标签: css css-selectors

众所周知,过度使用id css规则被认为是一种不好的做法。有很多关于这个主题的帖子 - 例如,这里是latest之一。

在这些帖子中经常提到css选择器实际上是由浏览器引擎从右到左解析的。也就是说,如果我们比如选择#very div那么,浏览器首先找到所有的div,然后测试它们是否拥有这个id的父级。

我的问题包括两个相关部分。第一部分 - 这是真的吗?有很多css引擎的实现,无论是开源的还是专有的,如果有人知道这些引擎中的任何一个,那将会很好的解释这个话题。

问题的第二部分是 - 如果它是真的,如果我们真的总是从右到左解析css规则,为什么我们实际上这样做呢?我根本不是解析专家,但是定义选择器的哪个部分更具体(生成更少的输出)并且不一定从右边开始过滤不是更方便吗?是太贵了还是什么?

1 个答案:

答案 0 :(得分:0)

Seteve Sounders不久前做过some tests,虽然他的测试确认了这一点(至少对于经过测试的浏览器),但它也显示了性能提升的规模。对于6000 dom元素,使用类vs后代的最大性能提升为200ms(非常显着),平均值更小(并且重要性更低)。

此测试还表明,虽然浏览器和引擎之间存在差异(有趣的是性能最佳)但趋势是相同的。