2010-03-09 32 views
15

在CSS中,級聯和繼承有什麼區別?在CSS中,級聯和繼承有什麼區別?

或者都是一樣的東西?

+1

請參閱** [賦值屬性值,級聯和繼承](http://www.w3.org/TR/CSS2/cascade.html#inheritance)** – rahul

+0

另請參見** [計算選擇器的特異性] (http://www.w3.org/TR/CSS2/cascade.html#specificity)**。級聯的***具體性質是與繼承相比的關鍵區別。 –

回答

27

繼承是關於屬性如何從元素滴落到其子元素。某些屬性,如font-family繼承。如果您在body上設置字體系列,則該字體系列將被body中的所有元素繼承。對於color也是如此,但對於backgroundheight而言並非如此,其總是默認爲transparentauto。在大多數情況下,這是有道理的。爲什麼背景會繼承?這將是一個痛苦。如果字體沒有繼承,該怎麼辦?甚至會是什麼樣子?

級聯是關於哪裏有衝突時優先。級聯的規則包括:

  1. 後來屬性覆蓋前面的屬性
  2. 更具體的選擇覆蓋不太具體選擇
  3. 指定的屬性覆蓋繼承性

等。級聯解決了任何衝突情況。這是屬性應用的順序。


(更新)特異性是用於確定在級聯選擇優先級的calculation。當兩個選擇器應用於相同的元素時,具有較高特異性的元素優先。

  1. 內聯樣式具有非常高的特異性(1000
  2. ID的具有100
  3. 類/屬性和僞類添加10
  4. 元件和僞元素添加1
特異性

將選擇器鏈中的所有零件相加以確定總體特異性。在平局的情況下,最後的選擇器優先。

當然,這是伴隨着各種邊緣情況和警告。無論有多少人,一個班級總是會覆蓋純素。與父代選擇器的繼承屬性相比,更有針對性的選擇器優先。如果有人使用!important,那麼你可以拋出所有的計算結果 - 勝過一切。

+0

+1不錯答案@Eric –

+0

明確的解釋。 – refactor

+0

您是否可以在解釋中加入特異性來闡明三者之間的差異:遺傳,級聯和特異性? –