2012-08-06 123 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標記。