【发布时间】:2014-04-12 14:45:25
【问题描述】:
我想知道使用属性选择器而不是类选择器是否存在性能问题。
div.test {}
div[test] {}
附注: 我只对 CSS 性能感兴趣,对 JS 不感兴趣。
【问题讨论】:
标签: css performance css-selectors
我想知道使用属性选择器而不是类选择器是否存在性能问题。
div.test {}
div[test] {}
附注: 我只对 CSS 性能感兴趣,对 JS 不感兴趣。
【问题讨论】:
标签: css performance css-selectors
根据这个项目,没有真正的性能问题。
这让我们感到惊讶,因为选择器的性能并不是真正的 在我们的日常工作中关注了一段时间。前端性能是一个 当然,这很重要,但 CSS 选择器似乎贡献了这样一个 微不足道的总页面加载时间,它没有发生 我们认为这可能是许多人的主要担忧。
他们也有基准。 编辑:见评论:他们有基准想法*,而不是基准。
【讨论】:
实际上有人创建了一个现实生活中的选择器测试来展示选择器匹配性能。
该表概述了与标准类相比,属性选择器的速度大约慢了 3 倍。
依赖属性选择器还需要更多字符来定位元素。最好定义简短的类名以保持样式表小。
例子:
// 17 Characters (attribute)
[title="example"] {
...
}
// 6 Characters (class)
.title {
...
}
http://scope.bitbucket.org/tests/selector-matching-performance/
【讨论】:
[title],只是1个字符的差异。需要考虑的更重要的事情是 data- 前缀,如果您发现值得使用它来确保您的网站功能相同,以防将来将同名的新属性添加到 HTML 标准中,或者如果您需要使用 HTMLOrForeignElement.dataset 只读属性。虽然使用 gzip/压缩,但大小/字节很可能不会有太大差异。
没有性能问题。两者的行为相同。但是类与元素的 css 的特异性存在差异。
特异性 - 特异性决定了浏览器应用哪个 CSS 规则。
如果两个选择器应用于同一个元素,则具有更高特异性的选择器获胜。
但特异性是有等级的。
来源:http://coding.smashingmagazine.com/2007/07/27/css-specificity-things-you-should-know/
因此div.test {} 更具体。
【讨论】:
div.test 不能比div[test]更具体。
根据this article,类选择器比属性选择器效率更高。
【讨论】: