每个人都说,* { ... }
选择器非常慢。但它到底有多慢?
我总是尽量避免它,但有时它非常有用。例如:* + h1 { margin-top 1em; }
答案 0 :(得分:6)
简单地说:通用选择器*
的速度与网页上的元素一样慢。
自right-to-left matching browsers take each element and match it against all candidate rules起,每个元素都会匹配*
就好了。它本身并不会损害性能,但是如果你的页面中有很多元素或者是一个非常复杂的DOM,那么它就会变得很慢,但即便如此,它也不会明显降低浏览器的性能。
例如,* + h1
之类的内容是合理的,因为如果您想要考虑匹配的性能,那么从右到左匹配的浏览器将仅在h1
个元素上测试该选择器首先,在检查之前是否有任何元素出现之前(由于*
基本上是保证匹配,因此确实不需要花费太多精力)。
您可能还希望查看this answer of mine关于* + *
(即两个通用选择器!)的类似问题。