CSS進(jìn)階:詳解CSS優(yōu)先級(jí)的讀法_CSS教程
教程Tag:暫無(wú)Tag,歡迎添加,賺取U幣!
最近看到篇對(duì)CSS優(yōu)先級(jí)有比較好的解釋的blog,雖然Mb5u.com有相關(guān)的文章,但依然轉(zhuǎn)載過(guò)來(lái)供大家學(xué)習(xí)參考。
詳解CSS優(yōu)先級(jí)的讀法,CSS優(yōu)先級(jí)包含四個(gè)級(jí)別(文內(nèi)選擇符,ID選擇符,Class選擇符,元素選擇符)以及各級(jí)別出現(xiàn)的次數(shù)。根據(jù)這四個(gè)級(jí)別出現(xiàn)的次數(shù)計(jì)算得到CSS的優(yōu)先級(jí)。
以下是引用:【轉(zhuǎn)自GOVO’s Blog】
對(duì)優(yōu)先級(jí)的讀法,應(yīng)該是以“組”來(lái)分,這個(gè)組之間相互獨(dú)立,從左到右進(jìn)行對(duì)比。它們成組出現(xiàn),以逗號(hào)分隔。
selector( a , b , c , d )正如w3c.org中原文所示,分為a,b,c,d四組,全為正整婁,默認(rèn)為0,對(duì)應(yīng)于不同的選擇器結(jié)構(gòu)和組成形式。在選擇器之間的優(yōu)先級(jí)進(jìn)行對(duì)比時(shí),從左到右1對(duì)1對(duì)比,當(dāng)比出有大者時(shí)即可停止比較。
再有,只要正確書(shū)寫(xiě),僅從優(yōu)先級(jí)中大概知道選擇器結(jié)構(gòu)形式了,如:
1,0,0,0表示是元素內(nèi)的style;
0,2,1,1表示是一個(gè)由兩個(gè)ID選擇器,1個(gè)類(lèi)或偽類(lèi)或?qū)傩赃x擇器,以及一個(gè)元素選擇器組成的選擇器。
CSS優(yōu)先級(jí)規(guī)則的細(xì)節(jié):
在糾正讀法后,才能開(kāi)始講詳細(xì)的規(guī)則:
a組數(shù)值只有把CSS寫(xiě)進(jìn)style屬性時(shí)才會(huì)為1,否則為0.寫(xiě)進(jìn)style的樣式聲明其實(shí)不算是個(gè)選擇器,所以這里面的b,c,d組值均為0,只有真正的選擇器才會(huì)有b,c,d組值。
b組數(shù)值決定于ID選擇器#ID,有多少個(gè)ID選擇器,并會(huì)進(jìn)行此組數(shù)值累加;
c組數(shù)值決定于類(lèi)、偽類(lèi)和屬性選擇符,并會(huì)進(jìn)行該組數(shù)值累加;
d組數(shù)值決定于元素名,即元素選擇器,并會(huì)進(jìn)行該組數(shù)值累加;
注意,這四組數(shù)值分別對(duì)應(yīng)于不同類(lèi)型的選擇器,互不影響,根據(jù)讀法法則進(jìn)行比較。
這里沒(méi)有討論到!important,就近原則和繼承,也沒(méi)有實(shí)例代碼,歡迎大家來(lái)W3Cbbs.com共同討論!
下面是列子:CSS優(yōu)先級(jí)問(wèn)題
CSS優(yōu)先級(jí)包含四個(gè)級(jí)別(文內(nèi)選擇符,ID選擇符,Class選擇符,元素選擇符)以及各級(jí)別出現(xiàn)的次數(shù)。根據(jù)這四個(gè)級(jí)別出現(xiàn)的次數(shù)計(jì)算得到CSS的優(yōu)先級(jí)。
CSS優(yōu)先級(jí)的計(jì)算規(guī)則如下:
然后,將這四個(gè)數(shù)字分別累加,就得到每個(gè)CSS定義的優(yōu)先級(jí)的值,
然后從左到右逐位比較大小,數(shù)字大的CSS樣式的優(yōu)先級(jí)就高。
例子:
css文件或<style>中如下定義:
元素的style屬性中如下定義:
如此以來(lái),h1元素的顏色是藍(lán)色。
注意:
1、!important聲明的樣式優(yōu)先級(jí)最高,如果沖突再進(jìn)行計(jì)算。
2、如果優(yōu)先級(jí)相同,則選擇最后出現(xiàn)的樣式。
3、繼承得到的樣式的優(yōu)先級(jí)最低。
詳解CSS優(yōu)先級(jí)的讀法,CSS優(yōu)先級(jí)包含四個(gè)級(jí)別(文內(nèi)選擇符,ID選擇符,Class選擇符,元素選擇符)以及各級(jí)別出現(xiàn)的次數(shù)。根據(jù)這四個(gè)級(jí)別出現(xiàn)的次數(shù)計(jì)算得到CSS的優(yōu)先級(jí)。
以下是引用:【轉(zhuǎn)自GOVO’s Blog】
對(duì)優(yōu)先級(jí)的讀法,應(yīng)該是以“組”來(lái)分,這個(gè)組之間相互獨(dú)立,從左到右進(jìn)行對(duì)比。它們成組出現(xiàn),以逗號(hào)分隔。
示例代碼 [www.wf0088.com]
selector( a , b , c , d )
compare: ↑ , ↑ , ↑ , ↑
compare: ↑ , ↑ , ↑ , ↑
selector( a , b , c , d )正如w3c.org中原文所示,分為a,b,c,d四組,全為正整婁,默認(rèn)為0,對(duì)應(yīng)于不同的選擇器結(jié)構(gòu)和組成形式。在選擇器之間的優(yōu)先級(jí)進(jìn)行對(duì)比時(shí),從左到右1對(duì)1對(duì)比,當(dāng)比出有大者時(shí)即可停止比較。
示例代碼 [www.wf0088.com]
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 */(上表中,↑表示還要進(jìn)行比較,√表示從此處已得到了結(jié)果)
/*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 */(上表中,↑表示還要進(jìn)行比較,√表示從此處已得到了結(jié)果)
再有,只要正確書(shū)寫(xiě),僅從優(yōu)先級(jí)中大概知道選擇器結(jié)構(gòu)形式了,如:
1,0,0,0表示是元素內(nèi)的style;
0,2,1,1表示是一個(gè)由兩個(gè)ID選擇器,1個(gè)類(lèi)或偽類(lèi)或?qū)傩赃x擇器,以及一個(gè)元素選擇器組成的選擇器。
CSS優(yōu)先級(jí)規(guī)則的細(xì)節(jié):
在糾正讀法后,才能開(kāi)始講詳細(xì)的規(guī)則:
a組數(shù)值只有把CSS寫(xiě)進(jìn)style屬性時(shí)才會(huì)為1,否則為0.寫(xiě)進(jìn)style的樣式聲明其實(shí)不算是個(gè)選擇器,所以這里面的b,c,d組值均為0,只有真正的選擇器才會(huì)有b,c,d組值。
b組數(shù)值決定于ID選擇器#ID,有多少個(gè)ID選擇器,并會(huì)進(jìn)行此組數(shù)值累加;
c組數(shù)值決定于類(lèi)、偽類(lèi)和屬性選擇符,并會(huì)進(jìn)行該組數(shù)值累加;
d組數(shù)值決定于元素名,即元素選擇器,并會(huì)進(jìn)行該組數(shù)值累加;
注意,這四組數(shù)值分別對(duì)應(yīng)于不同類(lèi)型的選擇器,互不影響,根據(jù)讀法法則進(jìn)行比較。
這里沒(méi)有討論到!important,就近原則和繼承,也沒(méi)有實(shí)例代碼,歡迎大家來(lái)W3Cbbs.com共同討論!
下面是列子:CSS優(yōu)先級(jí)問(wèn)題
CSS優(yōu)先級(jí)包含四個(gè)級(jí)別(文內(nèi)選擇符,ID選擇符,Class選擇符,元素選擇符)以及各級(jí)別出現(xiàn)的次數(shù)。根據(jù)這四個(gè)級(jí)別出現(xiàn)的次數(shù)計(jì)算得到CSS的優(yōu)先級(jí)。
CSS優(yōu)先級(jí)的計(jì)算規(guī)則如下:
示例代碼 [www.wf0088.com]
* 頁(yè)面中定義的樣式,加1,0,0,0
* 每個(gè)ID選擇符(如 #id),加0,1,0,0
* 每個(gè)Class選擇符(如 .class)、每個(gè)屬性選擇符(如 [attribute=])、每個(gè)偽類(lèi)(如 :hover)加0,0,1,0
* 每個(gè)元素選擇符(如p)或偽元素選擇符(如 :firstchild)等,加0,0,0,1
* 每個(gè)ID選擇符(如 #id),加0,1,0,0
* 每個(gè)Class選擇符(如 .class)、每個(gè)屬性選擇符(如 [attribute=])、每個(gè)偽類(lèi)(如 :hover)加0,0,1,0
* 每個(gè)元素選擇符(如p)或偽元素選擇符(如 :firstchild)等,加0,0,0,1
然后,將這四個(gè)數(shù)字分別累加,就得到每個(gè)CSS定義的優(yōu)先級(jí)的值,
然后從左到右逐位比較大小,數(shù)字大的CSS樣式的優(yōu)先級(jí)就高。
例子:
css文件或<style>中如下定義:
示例代碼 [www.wf0088.com]
1. h1 {color: red;}
/* 一個(gè)元素選擇符,結(jié)果是0,0,0,1 */
2. body h1 {color: green;}
/* 兩個(gè)元素選擇符,結(jié)果是 0,0,0,2 */
3. h2.grape {color: purple;}
/* 一個(gè)元素選擇符、一個(gè)Class選擇符,結(jié)果是 0,0,1,1*/
4. li#answer {color: navy;}
/* 一個(gè)元素選擇符,一個(gè)ID選擇符,結(jié)果是0,1,0,1 */
/* 一個(gè)元素選擇符,結(jié)果是0,0,0,1 */
2. body h1 {color: green;}
/* 兩個(gè)元素選擇符,結(jié)果是 0,0,0,2 */
3. h2.grape {color: purple;}
/* 一個(gè)元素選擇符、一個(gè)Class選擇符,結(jié)果是 0,0,1,1*/
4. li#answer {color: navy;}
/* 一個(gè)元素選擇符,一個(gè)ID選擇符,結(jié)果是0,1,0,1 */
元素的style屬性中如下定義:
示例代碼 [www.wf0088.com]
h1 {color: blue;}
/* 頁(yè)面中定義,一個(gè)元素選擇符,結(jié)果是1,0,0,1*/
注解:這里把所有的數(shù)字都進(jìn)行對(duì)位疊加,(0,0,0,1)+(0,0,0,2)+(0,0,1,1)+(0,1,0,1)+(1,0,0,1)=(1,1,1,6)
/* 頁(yè)面中定義,一個(gè)元素選擇符,結(jié)果是1,0,0,1*/
注解:這里把所有的數(shù)字都進(jìn)行對(duì)位疊加,(0,0,0,1)+(0,0,0,2)+(0,0,1,1)+(0,1,0,1)+(1,0,0,1)=(1,1,1,6)
如此以來(lái),h1元素的顏色是藍(lán)色。
注意:
1、!important聲明的樣式優(yōu)先級(jí)最高,如果沖突再進(jìn)行計(jì)算。
2、如果優(yōu)先級(jí)相同,則選擇最后出現(xiàn)的樣式。
3、繼承得到的樣式的優(yōu)先級(jí)最低。
相關(guān)CSS教程:
- 相關(guān)鏈接:
- 教程說(shuō)明:
CSS教程-CSS進(jìn)階:詳解CSS優(yōu)先級(jí)的讀法。