*真的有多慢?

时间:2012-09-01 15:17:02

标签: css performance css-selectors

每个人都说,* { ... }选择器非常慢。但它到底有多慢?

我总是尽量避免它,但有时它非常有用。例如:* + h1 { margin-top 1em; }

1 个答案:

答案 0 :(得分:6)

简单地说:通用选择器*的速度与网页上的元素一样慢。

right-to-left matching browsers take each element and match it against all candidate rules起,每个元素都会匹配*就好了。它本身并不会损害性能,但是如果你的页面中有很多元素或者是一个非常复杂的DOM,那么它就会变得很慢,但即便如此,它也不会明显降低浏览器的性能。

例如,* + h1之类的内容是合理的,因为如果您想要考虑匹配的性能,那么从右到左匹配的浏览器将仅在h1个元素上测试该选择器首先,在检查之前是否有任何元素出现之前(由于*基本上是保证匹配,因此确实不需要花费太多精力)。

您可能还希望查看this answer of mine关于* + *(即两个通用选择器!)的类似问题。