DIV CSS 佈局教程網

 DIV+CSS佈局教程網 >> 網頁腳本 >> CSS入門知識 >> CSS詳解 >> CSS層疊與繼承用法手冊(1)
CSS層疊與繼承用法手冊(1)
編輯:CSS詳解     

本文向大家描述一下CSS層疊與繼承的用法,個元素可能同時被多個CSS選擇器選中,每個選擇器都有一些CSS規則,這就是層疊,而繼承得來的規則沒有特殊性。

CSS層疊與繼承

一、CSS層疊

我們知道文檔中的一個元素可能同時被多個CSS選擇器選中,每個選擇器都有一些CSS規則,這就是層疊。這些規則有可能不矛盾的,自然這些規則將會同時起效,然而有些規則是相互沖突的,例如:

ExampleSourceCode

  1. <HtmlXMLnsHtmlXMLns="http://www.w3.org/1999/xHtml">
  2. <head>
  3. <title>CSSCascadetitle>
  4. <styletypestyletype="text/CSS">
  5. h1{color:Red;}
  6. bodyh1{color:Blue;}
  7. style>
  8. head>
  9. <body>
  10. <h1>Hellodiv-CSS.Neth1>
  11. body>
  12. Html>

為此需要為每條規則制定特殊性,當發生沖突的時候必須選出一條最高特殊性的規則來應用。CSS規則的特殊性可以用4個整數來表示,例如0,0,0,0.計算規則如下:

對於規則中的每個ID選擇符,特殊性加0,1,0,0

對於規則中每個類選擇符和屬性選擇符以及偽類,特殊性加0,0,1,0

對於規則中的每個元素名或者偽元素,特殊性加0,0,0,1

對於通配符,特殊性加0,0,0,0.

對於內聯規則,特殊性加1,0,0,0

最終得到結果就是這個規則的特殊性。兩個特殊性的比較類似字符串大小的比較,是從左往右依次比較,第一個數字大的規則的特殊性高。上例中兩條規則的特殊性分別是0,0,0,1和0,0,0,2,顯然第二條勝出,因此最終字是藍色的。

注意,通配符的特殊性0,0,0,0看起來沒有作用,實際上不是,還有一種沒有特殊性的規則,0,0,0,0要比沒有特殊性更特殊,下面會介紹。

CSS還有一個!important標簽,用來改變CSS規則的特殊性。實際上,在解析CSS規則特殊性的時候,是將具有!important的規則和沒有此標簽的規則利用上述方法分別計算特殊性,分別選出特殊性最高的規則。最終合並的時候,具有任何特殊性的帶有!important標記的規則勝出。

XML學習教程| jQuery入門知識| AJAX入門| Dreamweaver教程| Fireworks入門知識| SEO技巧| SEO優化集錦|
Copyright © DIV+CSS佈局教程網 All Rights Reserved