0

浏览器解释 HTML 并在解释时显示结果。那么为什么第一个类属性不被第二个覆盖。

<span class ='first' class= 'second' >text</span>

但如果我这样做

<span class ='first' class= 'second' style='color: green'>text</span>

所有以前的样式都被覆盖。

这是小提琴

谢谢你。

4

3 回答 3

6

两次具有相同的属性是无效的 HTML,浏览器会执行错误恢复。

具体来说,从规范

当用户代理离开属性名称状态时(如果合适,在发出标记令牌之前),必须将完整的属性名称与同一令牌上的其他属性进行比较;如果令牌上已经有一个具有完全相同名称的属性,那么这是一个解析错误,并且必须删除新属性以及与之关联的值(如果有的话)。

所以第二个类属性被忽略,因为开始标签已经有一个类属性。

(请注意,您可以在一个元素上指定多个类,因为该属性采用空格分隔的列表class="first second":)

样式属性不会覆盖类属性。该元素将具有与之关联的两个属性。但是,当应用样式表时,样式属性规则将比具有类选择器的规则具有更高的特异性,因此样式属性中指定的属性将赢得级联。

于 2013-07-24T11:51:41.847 回答
3

首先语法无效,class标签内只能有 1 个属性。

并且就超载而言,inline styles在 CSS 中具有最高优先级。

使用多个类的正确方法是这样的

<span class ='first second'>text</span>

演示

于 2013-07-24T11:51:07.453 回答
1
  1. 一个 html 元素只能有 1 个class(或任何其他类型的属性中的 1 个),所以第二个元素总是会被浏览器拒绝(即使它看起来像元素有 2 - 实际上它只有一个)

  2. 规则是style元素上的属性将始终优先于样式中的样式class

于 2013-07-24T11:50:36.687 回答