2013-07-24 42 views
0

瀏覽器解釋HTML並在解釋結果時顯示結果。那麼爲什麼第一類屬性不會被第二類屬性覆蓋。爲什麼不用第二個類屬性覆蓋前一個。 HTML

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

但如果我這樣做

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

所有以前的造型被覆蓋。

這裏是fiddle

謝謝。

+0

因爲這兩行代碼都不是有效的HTML部分。 – ElmoVanKielmo

回答

6

具有相同屬性的兩次是無效的HTML和瀏覽器執行錯誤恢復。

具體地,從the specification

當用戶代理離開屬性名稱狀態(併發射標記令牌,如果合適的話)之前,將完整的屬性的名稱必須進行比較,以在相同的其他屬性令牌;如果令牌上已經有一個具有完全相同名稱的屬性,那麼這是一個分析錯誤,並且必須刪除新屬性以及與其關聯的值(如果有的話)。

因此,第二個類屬性被忽略,因爲開始標記已經有一個類屬性。

(請注意,您可以將元素指定多個類,因爲屬性接受一個空格分隔列表:class="first second"

樣式屬性不會覆蓋類屬性。該元素將具有與其關聯的兩個屬性。但是,當應用樣式表時,樣式屬性規則比具有類選擇器的規則具有更高的specificity,因此樣式屬性中指定的屬性會贏得級聯。

1
  1. 一個html元素只能有1 class(或任何其它類型的屬性:1),從而第二個將總是由瀏覽器(被拒絕,即使它看起來像元件具有2 - 有效它將只有一個)

  2. 的規則是style性的元素上會始終以優先樣式之前在class

3

首先語法是無效的,你只能有1個標籤內部的屬性。

並且就騎行而言,inline styles在CSS中的優先級最高。

使用多種類型的正確方法是這樣的

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

Demo

+1

不要混淆「語義錯誤」與「無效」 – BoltClock

+0

@BoltClock完成:) –

相關問題