【发布时间】:2014-10-30 09:48:43
【问题描述】:
我知道这很挑剔,但我正在使用一个编辑器,它会检查 CSS 并不断抱怨
don't use adjoining classes > e.g. .foo.bar
我忽略了警告,但这让我很好奇,在上面找不到任何东西。说我有:
<ul class="foo bar"></ul>
哪个 CSS 选择器更快:
ul.foo
.bar.foo
我知道选择器从右到左工作,所以在这两种情况下都会首先选择foo,之后浏览器必须在选择中找到所有ul(?)或所有.bar元素(? )。
问题:
在 CSS 中,[class][class] 比 [element][class] 快吗?
谢谢!
【问题讨论】:
-
我不知道哪个更快,webdevloper 工具中的一些分析可以帮助判断它,但这是 2 个非常不同的选择器选择 2 组不同的元素。它们都与您的示例相同,但肯定不会在更大的范围内。 P.S:我不觉得它“挑剔”,我称之为“注重细节”。在一个有很多元素需要解析/选择的页面上,这样的优化确实会有所作为。在“正常”页面上,您肯定看不到任何内容...
-
好点。还是很好奇。
-
在需要时担心性能。
-
从右到左的选择器匹配在复合选择器中不起作用,因此在
ul.foo或.bar.foo上没有 RTL 评估。确实没有理由这样做,特别是考虑到您无法重新排序类型选择器(并且类型选择器通常比类选择器更快)。在 RTL 评估中,每个元素都针对键选择器进行测试,键选择器是整个简单的选择器序列。至于每个简单选择器的评估方式或顺序,我很确定那是实现开始分歧的时候。
标签: css performance browser css-selectors