使用CSS .class而不是[attribute]选择器的任何具体优势?

时间:2013-12-31 18:22:47

标签: css

在任何现代浏览器中(在IE 8之后),是否有理由再使用CSS类,而不是总是使用属性选择器?

我提出这个问题是因为我正在使用AngularJS代码,这是非常属性驱动的,而且我发现自己只根据属性而不是使用类来编写样式,但这不是常态,我想知道如果有原因的话。

两者之间是否存在隐藏的差异导致人们仍然使用类而不是属性?

  • 语法:我认为<bar foo><bar class="foo">大致相同:两者都在标记中声明,两者都可以通过JS修改(添加/删除),两者都具有相同的名称结构体。同样,[foo]{}.foo{}完全相同。

  • 类和属性都具有相同的specificity,因此CSS会对它们进行相同的权重。

  • 我无法找到以某种方式引用性能问题的消息来源。

那么为什么类仍然存在,当属性已经存在?是不是因为他们先在那里而且已经陷入困境?

2 个答案:

答案 0 :(得分:5)

我认为选择器速度是一个非常具体的原因。

http://jsperf.com/attribute-vs-class-selectors

enter image description here

答案 1 :(得分:3)

您从特定的机器可读性角度来看这个,但不是从人类可读性角度来看。

让我们假设有人正在与项目开发人员和设计人员合作。为元素分配class告诉人类读者这些元素属于某个特定组的代码,并且它们所属的组应该具有相对相同的样式。这使得引用,维护和更新CSS样式变得更加简单和快速。

另一方面,

[attributes]几乎就像是class的倒置。该元素不属于[attribute],因为它属于class[attribute]属于该元素。

@Diodeus答案提供了非常具体的证据来说明基准,IMO是这里最重要的因素,但也不要忘记语义。