亚洲美精品二区性爱|免费中文字幕不卡视频|一本久久A久久精品亚洲|中文字幕 亚洲精品 导航|国产日本欧美一区二区三区|在线观看欧美日韩不卡一区|亚洲人成网站精品片在线观看|欧美精品一区二区三区乱码欧美

合肥市高新區(qū)長江西路與科學(xué)大道交口5F創(chuàng)業(yè)園A座309
136 5560 1775

詳解CSS優(yōu)先級的讀法

發(fā)表日期:2010-04-10 瀏覽次數(shù):2255次

啟邁網(wǎng)絡(luò)詳解CSS優(yōu)先級的讀法:

CSS優(yōu)先級包含四個級別(文內(nèi)選擇符,ID選擇符,Class選擇符,元素選擇符)以及各級別出現(xiàn)的次數(shù)。根據(jù)這四個級別出現(xiàn)的次數(shù)計算得到CSS的優(yōu)先級。

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

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

 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  */(上表中,↑表示還要進行比較,√表示從此處已得到了結(jié)果)

再有,只要正確書寫,僅從優(yōu)先級中大概知道選擇器結(jié)構(gòu)形式了,如:

1,0,0,0表示是元素內(nèi)的style;

0,2,1,1表示是一個由兩個ID選擇器,1個類或偽類或?qū)傩赃x擇器,以及一個元素選擇器組成的選擇器。

CSS優(yōu)先級規(guī)則的細(xì)節(jié):
在糾正讀法后,才能開始講詳細(xì)的規(guī)則:

a組數(shù)值只有把CSS寫進style屬性時才會為1,否則為0.寫進style的樣式聲明其實不算是個選擇器,所以這里面的b,c,d組值均為0,只有真正的選擇器才會有b,c,d組值。
b組數(shù)值決定于ID選擇器#ID,有多少個ID選擇器,并會進行此組數(shù)值累加;
c組數(shù)值決定于類、偽類和屬性選擇符,并會進行該組數(shù)值累加;
d組數(shù)值決定于元素名,即元素選擇器,并會進行該組數(shù)值累加;
注意,這四組數(shù)值分別對應(yīng)于不同類型的選擇器,互不影響,根據(jù)讀法法則進行比較。

(這里沒有討論到!important,就近原則和繼承,也沒有實例代碼,歡迎大家共同討論?。?/P>

下面是列子:(CSS優(yōu)先級問題)

CSS優(yōu)先級包含四個級別(文內(nèi)選擇符,ID選擇符,Class選擇符,元素選擇符)以及各級別出現(xiàn)的次數(shù)。根據(jù)這四個級別出現(xiàn)的次數(shù)計算得到CSS的優(yōu)先級。
CSS優(yōu)先級的計算規(guī)則如下:
* 頁面中定義的樣式,加1,0,0,0
* 每個ID選擇符(如 #id),加0,1,0,0
* 每個Class選擇符(如 .class)、每個屬性選擇符(如 [attribute=])、每個偽類(如 :hover)加0,0,1,0
* 每個元素選擇符(如p)或偽元素選擇符(如 :firstchild)等,加0,0,0,1
然后,將這四個數(shù)字分別累加,就得到每個CSS定義的優(yōu)先級的值,
然后從左到右逐位比較大小,數(shù)字大的CSS樣式的優(yōu)先級就高。

例子:
css文件或<style>中如下定義:
1. h1 {color: red;}
/* 一個元素選擇符,結(jié)果是0,0,0,1 */
2. body h1 {color: green;}
/* 兩個元素選擇符,結(jié)果是 0,0,0,2 */
3. h2.grape {color: purple;}
/* 一個元素選擇符、一個Class選擇符,結(jié)果是 0,0,1,1*/
4. li#answer {color: navy;}
/* 一個元素選擇符,一個ID選擇符,結(jié)果是0,1,0,1 */
元素的style屬性中如下定義:
h1 {color: blue;}
/* 頁面中定義,一個元素選擇符,結(jié)果是1,0,0,1*/

注解:這里把所有的數(shù)字都進行對位疊加,(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元素的顏色是藍(lán)色。

注意:
1、!important聲明的樣式優(yōu)先級最高,如果沖突再進行計算。
2、如果優(yōu)先級相同,則選擇最后出現(xiàn)的樣式。
3、繼承得到的樣式的優(yōu)先級最低。


將文章分享到:

版權(quán)所有:啟邁科技-合肥網(wǎng)站建設(shè) 皖I(lǐng)CP備19009304號-1 皖公網(wǎng)安備 34010402702162號

網(wǎng)站建設(shè),網(wǎng)站設(shè)計公司啟邁科技,為眾多企業(yè)提供網(wǎng)站建設(shè),網(wǎng)站制作,響應(yīng)式網(wǎng)站設(shè)計,手機網(wǎng)站建設(shè),微網(wǎng)站,模板建站,企業(yè)郵箱等一站式互聯(lián)網(wǎng)解決方案和建站服務(wù)10年。