CSS:为速度/准确度指定特定元素的确切路径是否重要?

Nik*_*ria 5 css performance css-selectors

在为特定元素定义CSS 时,如果我们在讨论网页的速度/准确性/处理指定精确路径会有什么不同吗?

例如,如果我在表格的第3列中输入文本,这对于速度,准确度,处理和其他参数更好?

选项1:

table input[type="text"]
{
    background:yellow;
}
Run Code Online (Sandbox Code Playgroud)

方案2:

table td:nth-child(3) input[type="text"]
{
    background:yellow;
}
Run Code Online (Sandbox Code Playgroud)

Bol*_*ock 7

不,添加更多复合选择器只会给浏览器提供更多要检查的元素,从而开展更多工作.

如果输入只出现在特定的地方,并且您可以保证它们永远不会出现在给定页面中的任何其他地方,那么无论如何精确地使您的选择器超出input[type="text"]都是无关紧要的,因为无论如何它总是以同一组元素为目标.您添加的任何额外检查都会变得多余.

但真正的问题是表现在这里是否重要.除非你有成千上万的这样的元素,否则答案是否定的.尽可能具体.如果您需要上下文选择器以确保您不会意外地定位错误的元素,那么将它们放入其中是没有害处的.

  • @nikunj:这取决于.大多数实现都执行所谓的[从右到左的评估](http://stackoverflow.com/questions/5797014/why-do-browsers-match-css-selectors-from-right-to-left),这意味着在确定它们是否出现在`td:nth-​​child(3)`之前,它们首先检查每个`input [type ="text"]`,而不是先限制它们的范围. (3认同)