国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > CSS > 正文

CSS優先級規則的細節

2024-07-11 08:21:58
字體:
來源:轉載
供稿:網友

  最近看到篇對css優先級有比較好的解釋的blog,雖然VeVbcom有相關的文章,但依然轉載過來供大家學習參考。

  詳解css優先級的讀法,css優先級包含四個級別(文內選擇符,id選擇符,class選擇符,元素選擇符)以及各級別出現的次數。根據這四個級別出現的次數計算得到css的優先級。

  對優先級的讀法,應該是以“組”來分,這個組之間相互獨立,從左到右進行對比。它們成組出現,以逗號分隔。

  selector( a , b , c , d )
  compare: ↑ , ↑ , ↑ , ↑
  selector( a , b , c , d )正如w3c.org中原文所示,分為a,b,c,d四組,全為正整婁,默認為0,對應于不同的選擇器結構和組成形式。在選擇器之間的優先級進行對比時,從左到右1對1對比,當比出有大者時即可停止比較。

li.red.level  {}  /* a=0 b=0 c=2 d=1 -> specificity = 0 , 0 , 2 , 1  */
       /*compare                                       ↑ , ↑ , √      */
 h1 + *[rel=up]{}  /* a=0 b=0 c=1 d=1 -> specificity = 0 , 0 , 1 , 1  */
       /*compare                                       ↑ , ↑ , ↑ , √  */
 ul ol li.red  {}  /* a=0 b=0 c=1 d=3 -> specificity = 0 , 0 , 1 , 3  */
       /*compare                                       ↑ , ↑ , √      */
 #x34y         {}  /* a=0 b=1 c=0 d=0 -> specificity = 0 , 1 , 0 , 0  */
       /*compare                                       ↑ , √          */
 style=""          /* a=1 b=0 c=0 d=0 -> specificity = 1 , 0 , 0 , 0  */(上表中,↑表示還要進行比較,√表示從此處已得到了結果)

  再有,只要正確書寫,僅從優先級中大概知道選擇器結構形式了,如:

  1,0,0,0表示是元素內的style;

  0,2,1,1表示是一個由兩個id選擇器,1個類或偽類或屬性選擇器,以及一個元素選擇器組成的選擇器。

  css優先級規則的細節:

  在糾正讀法后,才能開始講詳細的規則:

  a組數值只有把css寫進style屬性時才會為1,否則為0.寫進style的樣式聲明其實不算是個選擇器,所以這里面的b,c,d組值均為0,只有真正的選擇器才會有b,c,d組值。

  b組數值決定于id選擇器#id,有多少個id選擇器,并會進行此組數值累加;

  c組數值決定于類、偽類和屬性選擇符,并會進行該組數值累加;

  d組數值決定于元素名,即元素選擇器,并會進行該組數值累加;

  注意,這四組數值分別對應于不同類型的選擇器,互不影響,根據讀法法則進行比較。

  這里沒有討論到!important,就近原則和繼承,也沒有實例代碼,歡迎大家來VeVb.com共同討論!

  下面是列子:css優先級問題

  css優先級包含四個級別(文內選擇符,id選擇符,class選擇符,元素選擇符)以及各級別出現的次數。根據這四個級別出現的次數計算得到css的優先級。

  css優先級的計算規則如下:

* 頁面中定義的樣式,加1,0,0,0
* 每個id選擇符(如 #id),加0,1,0,0
* 每個class選擇符(如 .class)、每個屬性選擇符(如 [attribute=])、每個偽類(如 :hover)加0,0,1,0
* 每個元素選擇符(如p)或偽元素選擇符(如 :firstchild)等,加0,0,0,1

  然后,將這四個數字分別累加,就得到每個css定義的優先級的值,

  然后從左到右逐位比較大小,數字大的css樣式的優先級就高。

  例子:

  css文件或<style>中如下定義:

1. h1 {color: red;}
/* 一個元素選擇符,結果是0,0,0,1 */
2. body h1 {color: green;}
/* 兩個元素選擇符,結果是 0,0,0,2 */
3. h2.grape {color: purple;}
/* 一個元素選擇符、一個class選擇符,結果是 0,0,1,1*/
4. li#answer {color: navy;}
/* 一個元素選擇符,一個id選擇符,結果是0,1,0,1 */

  元素的style屬性中如下定義:

h1 {color: blue;}
/* 頁面中定義,一個元素選擇符,結果是1,0,0,1*/
注解:這里把所有的數字都進行對位疊加,(0,0,0,1)+(0,0,0,2)+(0,0,1,1)+(0,1,0,1)+(1,0,0,1)=(1,1,1,6)

  如此以來,h1元素的顏色是藍色。
  注意:
  1、!important聲明的樣式優先級最高,如果沖突再進行計算。
  2、如果優先級相同,則選擇最后出現的樣式。
  3、繼承得到的樣式的優先級最低。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 八宿县| 察隅县| 凉山| 兴城市| 莲花县| 新余市| 定日县| 财经| 仲巴县| 定襄县| 封开县| 西和县| 邵东县| 天柱县| 文昌市| 资溪县| 隆林| 班玛县| 洛宁县| 凯里市| 龙山县| 姚安县| 望江县| 牟定县| 喀喇沁旗| 汉阴县| 徐州市| 太仓市| 沁源县| 大田县| 江山市| 绥棱县| 奉化市| 双城市| 闻喜县| 乌鲁木齐市| 兴安县| 望都县| 广丰县| 顺昌县| 治县。|