2012-08-06 81 views
0

为什么第2行“测试2”会被橙色覆盖?css覆盖原因

<head runat="server"> 
    <title></title> 
    <style type="text/css"> 
     td 
     { 
      color: white; 
     } 
     .testclass td 
     { 
      background-color: Orange; 
     } 
    </style> 
    <link href="StyleSheet.css" rel="stylesheet" type="text/css" /> 
</head> 
<body> 
    <form id="form1" runat="server"> 
    <div> 
     <table> 
      <tr class="testclass"> 
       <td style="background-color: Blue"> 
        Test 1 
       </td> 
      </tr> 
      <tr class="testclass"> 
       <td bgcolor="fushcia"> 
        Test 2 
       </td> 
      </tr> 
     </table> 
    </div> 
    </form> 
</body> 
</html> 

回答

6

bgcolor是一个表象的HTML属性。它总是被任何实际的CSS样式声明覆盖。

这在spec中提到:

的UA可以选择兑现的HTML源文件中的表现属性。如果是这样,这些属性将被转换为相应的CSS规则,其特异性等于0,并被视为在作者样式表的开头处插入。

用简单的英语,这意味着表现属性几乎没有任何意义,甚至比在作者样式表一个*规则(其中也有零specificity)样式更脆。

+0

“特别是,即使id属性被定义,形式为”[id = p33]“的选择符也被计为属性选择符(a = 0,b = 0,c = 1,d = 0)作为源文档的DTD中的“ID”。“嗯,有趣。 – JAB 2012-08-06 19:56:12

+0

@JAB:是的:)一个属性是否被认为是一个标识符是由文档语言定义的,而不是CSS。另外,并非所有的语言都将'id'视为标识符(例如,XML使用'xml:id'代替)。由于你无法单独从样式表中推断出这些信息,所以CSS解析器不能仅仅假定'id'代表一个标识符。所以,一个属性选择器就是这样处理的:一个属性选择器。 – BoltClock 2012-08-06 20:00:14

+0

所以对于XML,选择器'#apple'会引用带有'xml:id =“apple”'的XML元素? – JAB 2012-08-06 20:06:15

1

BGCOLOR因为HTML 4.01已被弃用,因此你不应该使用它,尽量背景:或背景色:

1

我相信CSS样式优先于HTML标记。