有没有人有关于CSS浏览器选择器速度的信息?换句话说,不同的选择器如何相互比较(在同一浏览器中)。

例如,我经常看到(并编写)这样的代码:

#content #elem { ...rules... }

但由于这些元素是唯一的ID,我只需要 #elem ,对吧?这让我想到浏览器是否可能更快地拥有更复杂的选择器 - 我的想法是浏览器可能会找到 #content 并知道只查看该元素,而不是其他地方。

另一个例子可能是 table tr td .class vs table .class

有帮助吗?

解决方案

说实话,你谈的是这么短的时间,我觉得它确实没什么区别。

在使用更具体的选择器方面 - 我认为这是一个好习惯,原因有两个:

  1. 它增强了代码的可读性 - 一目了然,您可以看到更多关于HTML应用程序的应用程序。
  2. 它减少了你的选择器在其他地方被覆盖的可能性,因为一个具有更多特定性的选择器将被写入,这是不太可能发生的。
  3. 你所说的可能在使用jQuery这样的JavaScript库时会有所作为 - 因为他们必须自己解析整个文档,但我自己从未注意到任何速度差异。

其他提示

此处 是我获得的一些信息经过快速搜索。

速度可能存在差异,但在任何正常使用情况下都无法察觉。写这样的CSS的真正原因是特异性。那就是你有

#content #elem {color: black;} 

#elem {color: red;}

元素应该是黑色的,因为这是更具体的规则。

不是一个聪明人,但你写这个问题的时间可能超过了所有访问你网站的用户的所有时间节省的总和(与#id#id2 vs#id2相关) 。那么写这个答案的时间到了....

你现在可以投票给我了:)

Mozilla的指南可能很有趣。

  1. 在效率和可读性之间总有一些选择。当然 table tr td .class 是最具可读性的,但是非常低效且可以简化 - 你有没有看到任何地方(假设有效标记) tr 而没有 table td 没有 tr ?至少你可以评论冗余部分,如:

    /* table tr */ td .class {
        color: #ccf;
    }
    
  2. 有时候其他人提到你需要额外的特异性,例如:你的 #elem 应该是红色的,除非在 #content 的特定上下文中。

    #elem {
        /* usually red */
        color: red;
    }
    
    #content #elem {
        /* except when in specific context */
        color: black;
    }
    
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top