成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

CSS 樣式優(yōu)先級(jí)

王晗 / 1034人閱讀

摘要:下面我們從這兩方面去看看樣式的優(yōu)先級(jí)。影響的規(guī)則是優(yōu)先規(guī)則最近的祖先樣式比其他祖先樣式優(yōu)先級(jí)高。若同時(shí)插有,則再利用規(guī)則判斷優(yōu)先級(jí)。

CSS 樣式優(yōu)先級(jí)

當(dāng)創(chuàng)建的樣式表越來越復(fù)雜時(shí),一個(gè)標(biāo)簽的樣式將會(huì)受到越來越多的影響,這種影響可能來自周圍的標(biāo)簽,也可能來自其自身。下面我們從這兩方面去看看 CSS 樣式的優(yōu)先級(jí)。

CSS 的繼承性

CSS 的繼承特性指的是應(yīng)用在一個(gè)標(biāo)簽上的那些 CSS 屬性被傳到其子標(biāo)簽上??聪旅娴?HTML 結(jié)構(gòu):

如果

有個(gè)屬性 color: red,則這個(gè)屬性將被

繼承,即

也擁有屬性 color: red。

由上可見,當(dāng)網(wǎng)頁比較復(fù)雜, HTML 結(jié)構(gòu)嵌套較深時(shí),一個(gè)標(biāo)簽的樣式將深受其祖先標(biāo)簽樣式的影響。影響的規(guī)則是:

CSS 優(yōu)先規(guī)則1: 最近的祖先樣式比其他祖先樣式優(yōu)先級(jí)高。

例1:


如果我們把一個(gè)標(biāo)簽從祖先那里繼承來的而自身沒有的屬性叫做“祖先樣式”,那么“直接樣式”就是一個(gè)標(biāo)簽直接擁有的屬性。又有如下規(guī)則:

CSS 優(yōu)先規(guī)則2:“直接樣式”比“祖先樣式”優(yōu)先級(jí)高。

例2:


選擇器的優(yōu)先級(jí)

上面討論了一個(gè)標(biāo)簽從祖先繼承來的屬性,現(xiàn)在討論標(biāo)簽自有的屬性。在討論 CSS 優(yōu)先級(jí)之前,先說說 CSS 7 種基礎(chǔ)的選擇器:

ID 選擇器, 如 #id{}

類選擇器, 如 .class{}

屬性選擇器, 如 a[href="segmentfault.com"]{}

偽類選擇器, 如 :hover{}

偽元素選擇器, 如 ::before{}

標(biāo)簽選擇器, 如 span{}

通配選擇器, 如 *{}

CSS 優(yōu)先規(guī)則3:優(yōu)先級(jí)關(guān)系:內(nèi)聯(lián)樣式 > ID 選擇器 > 類選擇器 = 屬性選擇器 = 偽類選擇器 > 標(biāo)簽選擇器 = 偽元素選擇器

例3:

// HTML
// CSS #content-id { color: red; } .content-class { color: blue; } div { color: grey; }
最終的 color 為 black,因?yàn)閮?nèi)聯(lián)樣式比其他選擇器的優(yōu)先級(jí)高。

所有 CSS 的選擇符由上述 7 種基礎(chǔ)的選擇器或者組合而成,組合的方式有 3 種:

后代選擇符: .father .child{}

子選擇符: .father > .child{}

相鄰選擇符: .bro1 + .bro2{}

當(dāng)一個(gè)標(biāo)簽同時(shí)被多個(gè)選擇符選中,我們便需要確定這些選擇符的優(yōu)先級(jí)。我們有如下規(guī)則:

CSS 優(yōu)先規(guī)則4:計(jì)算選擇符中 ID 選擇器的個(gè)數(shù)(a),計(jì)算選擇符中類選擇器、屬性選擇器以及偽類選擇器的個(gè)數(shù)之和(b),計(jì)算選擇符中標(biāo)簽選擇器和偽元素選擇器的個(gè)數(shù)之和(c)。按 a、b、c 的順序依次比較大小,大的則優(yōu)先級(jí)高,相等則比較下一個(gè)。若最后兩個(gè)的選擇符中 a、b、c 都相等,則按照“就近原則”來判斷。

例4:

// HTML
// CSS #con-id span { color: red; } div .con-span { color: blue; } 由規(guī)則 4 可見, 的 color 為 red。

如果外部樣式表和內(nèi)部樣式表中的樣式發(fā)生沖突會(huì)出現(xiàn)什么情況呢?這與樣式表在 HTML 文件中所處的位置有關(guān)。樣式被應(yīng)用的位置越在下面則優(yōu)先級(jí)越高,其實(shí)這仍然可以用規(guī)則 4 來解釋。

例5:

// HTML



// style-link.css div { background: lime; } // style-import.css div { background: grey; } 從順序上看,內(nèi)部樣式在最下面,被最晚引用,所以
的背景色為 blue。

上面代碼中,@import 語句必須出現(xiàn)在內(nèi)部樣式之前,否則文件引入無效。當(dāng)然不推薦使用 @import 的方式引用外部樣式文件,原因見另一篇博客:CSS 引入方式。

CSS 還提供了一種可以完全忽略以上規(guī)則的方法,當(dāng)你一定、必須確保某一個(gè)特定的屬性要顯示時(shí),可以使用這個(gè)技術(shù)。

CSS 優(yōu)先規(guī)則5:屬性后插有 !important 的屬性擁有最高優(yōu)先級(jí)。若同時(shí)插有 !important,則再利用規(guī)則 3、4 判斷優(yōu)先級(jí)。

例6:

// HTML

// CSS p { background: red !important; } .father .son { background: blue; } 雖然 .father .son 擁有更高的權(quán)值,但選擇器 p 中的 background 屬性被插入了 !important, 所以

的 background 為 red。

錯(cuò)誤的說法

在學(xué)習(xí)過程中,你可能發(fā)現(xiàn)給選擇器加權(quán)值的說法,即 ID 選擇器權(quán)值為 100,類選擇器權(quán)值為 10,標(biāo)簽選擇器權(quán)值為 1,當(dāng)一個(gè)選擇器由多個(gè) ID 選擇器、類選擇器或標(biāo)簽選擇器組成時(shí),則將所有權(quán)值相加,然后再比較權(quán)值。這種說法其實(shí)是有問題的。比如一個(gè)由 11 個(gè)類選擇器組成的選擇器和一個(gè)由 1 個(gè) ID 選擇器組成的選擇器指向同一個(gè)標(biāo)簽,按理說 110 > 100,應(yīng)該應(yīng)用前者的樣式,然而事實(shí)是應(yīng)用后者的樣式。錯(cuò)誤的原因是:選擇器的權(quán)值不能進(jìn)位。還是拿剛剛的例子說明。11 個(gè)類選擇器組成的選擇器的總權(quán)值為 110,但因?yàn)?11 個(gè)均為類選擇器,所以其實(shí)總權(quán)值最多不能超過 100, 你可以理解為 99.99,所以最終應(yīng)用后者樣式。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/111168.html

相關(guān)文章

  • css樣式權(quán)重優(yōu)先級(jí),css樣式優(yōu)先級(jí)

    摘要:還有一篇是這樣排序的多重樣式間遵循繼承來的樣式瀏覽器缺省設(shè)置外部樣式表內(nèi)部樣式表內(nèi)聯(lián)樣式結(jié)合樣式繼承問題這個(gè)問題及其答案來看,繼承的優(yōu)先級(jí)的確是最低的。 原文:http://www.bkjia.com/Javascri... 樣式選擇器權(quán)重優(yōu)先級(jí): important > 內(nèi)嵌樣式 > ID > 類 > 標(biāo)簽 | 偽類 | 屬性選擇 > 偽對(duì)象 > 繼承 > 通配符 importa...

    AJie 評(píng)論0 收藏0
  • css樣式權(quán)重優(yōu)先級(jí)css樣式優(yōu)先級(jí)

    摘要:還有一篇是這樣排序的多重樣式間遵循繼承來的樣式瀏覽器缺省設(shè)置外部樣式表內(nèi)部樣式表內(nèi)聯(lián)樣式結(jié)合樣式繼承問題這個(gè)問題及其答案來看,繼承的優(yōu)先級(jí)的確是最低的。 原文:http://www.bkjia.com/Javascri... 樣式選擇器權(quán)重優(yōu)先級(jí): important > 內(nèi)嵌樣式 > ID > 類 > 標(biāo)簽 | 偽類 | 屬性選擇 > 偽對(duì)象 > 繼承 > 通配符 importa...

    keithxiaoy 評(píng)論0 收藏0
  • 關(guān)于CSS你應(yīng)該知道的基礎(chǔ)知識(shí) - 樣式應(yīng)用篇

    摘要:我是紅色這種引用代碼的方式在一定程度上解決了所有代碼都分散寫在各個(gè)元素上的問題,但是不利于代碼的整體重用。需要詳盡選定該元素來設(shè)置具體的樣式。子元素會(huì)繼承父元素的樣式,等除外。 上一篇簡單總結(jié)了一下選擇器,如果一個(gè)元素被多個(gè)選擇器選中,元素的樣式就會(huì)以級(jí)聯(lián)方式被應(yīng)用到。要搞清最終那個(gè)樣式被應(yīng)用到元素上了,首先要明白引用CSS代碼的幾種方式。 CSS代碼引用方式 如何應(yīng)用CSS代碼到Ht...

    fxp 評(píng)論0 收藏0
  • 關(guān)于CSS你應(yīng)該知道的基礎(chǔ)知識(shí) - 樣式應(yīng)用篇

    摘要:我是紅色這種引用代碼的方式在一定程度上解決了所有代碼都分散寫在各個(gè)元素上的問題,但是不利于代碼的整體重用。需要詳盡選定該元素來設(shè)置具體的樣式。子元素會(huì)繼承父元素的樣式,等除外。 上一篇簡單總結(jié)了一下選擇器,如果一個(gè)元素被多個(gè)選擇器選中,元素的樣式就會(huì)以級(jí)聯(lián)方式被應(yīng)用到。要搞清最終那個(gè)樣式被應(yīng)用到元素上了,首先要明白引用CSS代碼的幾種方式。 CSS代碼引用方式 如何應(yīng)用CSS代碼到Ht...

    Michael_Lin 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<