div.container 比 .container 更快? 你知道在jquery中,如果你对你的选择器更具体,它会更快,因为它迭代的次数更少..这是css的情况吗?
有没有办法衡量css的性能? 性能方面,这样的事情是否重要甚至完全取决于文本权重?
如果有人知道答案,我会很高兴,我实际上找到了一个类似的问题但没有确定答案。 Can CSS be more efficient if it is better specified?
答案 0 :(得分:45)
在现实世界中,速度差异可以忽略不计
技术.container
会更快,因为它有更少的处理选择器。
选择器具有固有的效率。因此,CSS选择器的效率要低得多:
#header
.promo
div
h2 + p
li > ul
ul a*
*
[type="text"]
a:hover
关于你的第二个问题:
有没有办法衡量CSS的效果?
史蒂夫·索德斯(Steve Souders)推出了一项在线测试来测量仍然可以访问的CSS的性能here。
现在有更好的方法来衡量效果,但这是一个可以快速轻松地使用的资源。
性能方面,这样的事情是否重要或完全取决于文本权重?
简短的回答是"不是真的"。
答案很长,"它取决于"。如果您正在开发一个简单的站点,除了您可能从最佳实践中获得的一般知识之外,没有必要对CSS性能大惊小怪。
如果您正在创建一个包含数万个DOM元素的网站,那么是的,这很重要。
答案 1 :(得分:4)
通常,规则越少越好,因此.container会比div.container快。除了缓存之外,.container首先被读取,然后其他元素必须添加div作为二级过滤器...在许多情况下是不必要的。
这在引擎中很常见,但有一些小的增量。
参见这篇文章:Writing efficient CSS,虽然它来自MDN(因此是Mozilla-geared),但对于我对一般引擎的了解大多数都是正确的。
答案 2 :(得分:3)
最佳案例与最差案例之间的差异为50毫秒。换句话说,考虑选择器性能,但不要浪费太多时间。 请参阅:https://smacss.com/book/selectors
所以我认为仅扩展CSS规则以获得更高的性能是没有多大意义的。只考虑更高的网络流量,可能更糟糕的可维护性,...... 但是,在您可以阅读的链接中,需要考虑哪些规则而不必增加CSS大小。
如果.container和div.container完全匹配页面上相同的元素,第一个可能更快:如果浏览器首先评估.container,实际上它已经完成了,但是使用div.container它有另外要检查元素是否为div。
免责声明:我不知道浏览器如何真正实现这些功能。我的结论基于相关文章。