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

資訊專欄INFORMATION COLUMN

css的樣式優(yōu)先級

jcc / 1254人閱讀

摘要:所以我更傾向于認為外部樣式表和內(nèi)部樣式表具有相同的優(yōu)先級,結(jié)論如下瀏覽器缺省設置外部樣式表內(nèi)部樣式表內(nèi)聯(lián)樣式同一樣式表內(nèi)部的優(yōu)先級同一樣式表內(nèi),樣式的優(yōu)先級主要是由選擇器的權(quán)重和權(quán)重的累加決定的。

前幾天做百度的筆試題,第一題就是關(guān)于css優(yōu)先級的,雖然知道一些規(guī)則,但碰上把各條規(guī)則相互組合就懵逼了,所以還是得來好好總結(jié)一下的。

首要原則

就兩條:

優(yōu)先級高的樣式覆蓋優(yōu)先級低的樣式

同一優(yōu)先級的樣式,后定義的覆蓋先定義的,即后來居上

而至于樣式的優(yōu)先級如何確定,就是接下來要討論的問題:

多重樣式間的優(yōu)先級

w3school給出的優(yōu)先級順序從低到高是:

瀏覽器缺省設置
外部樣式表
內(nèi)部樣式表(位于 標簽內(nèi)部)
內(nèi)聯(lián)樣式(在 HTML 元素內(nèi)部)

但其實外部樣式表若放在內(nèi)部樣式表后面其實是會覆蓋內(nèi)部樣式表的,舉個例子:

    
    
    
        
        多重樣式優(yōu)先級
        
        
        
    
    
        
---highter.css #box { height: 200px; } ---wider.css #box { width: 200px; }

最終得到的是一個寬高都為200px的紅色元素,很明顯,內(nèi)部樣式被放在后面的外部樣式覆蓋了。所以我更傾向于認為外部樣式表和內(nèi)部樣式表具有相同的優(yōu)先級,結(jié)論如下:

瀏覽器缺省設置 < 外部樣式表 = 內(nèi)部樣式表 < 內(nèi)聯(lián)樣式

同一樣式表內(nèi)部的優(yōu)先級

同一樣式表內(nèi),樣式的優(yōu)先級主要是由選擇器的權(quán)重和權(quán)重的累加決定的。

首先,參考這篇文章可知選擇器的權(quán)重排序為:

1.通用選擇器* 0-0-0
2.標簽選擇器,偽元素 0-0-1
3.類選擇器,屬性選擇器,偽類 0-1-0
4.ID 選擇器 1-0-0

而對于組合上面幾種情況的選擇器式而言,就需要將所有出現(xiàn)的權(quán)重進行相加,取相加后的結(jié)果作為權(quán)重,注意相加時:

不進位。因為每位權(quán)重間相差的數(shù)量級是很大的,在正常使用時不會出現(xiàn)低級選擇器靠數(shù)量的累加提升為高級權(quán)重(雖然在某些情況下確實會發(fā)生,比如256個class選擇器可以干掉1個id選擇器。。。)

無視+,>,~等組合選擇器的符號

not偽類不作為偽類計算權(quán)重,而是直接計算其參數(shù)的權(quán)重。比如下面的代碼中not偽類的權(quán)重要高于類選擇器:

    
    
    
        
        not偽類的優(yōu)先級
        
    
    
        

除了選擇器,樣式自身還可以繼承和提升優(yōu)先級,規(guī)則如下:

從祖先元素繼承來的樣式優(yōu)先級低于通用選擇器;甚至低于瀏覽器的缺省設置,比如最常見的,重置鏈接的默認樣式時必須寫在鏈接元素上,放在祖先元素中是沒有卵用滴

使用大殺器!important可將樣式提升到最高等級,不管這個樣式在哪個樣式表或選擇器中;如果在同一樣式中出現(xiàn)了多個!important,就得看上面的權(quán)重規(guī)則進行pk了

是不是看起來有點暈,附上參考文章里的大魚吃小魚的圖來輔助理解吧:

最終結(jié)論

結(jié)合上面的討論,我們可以得出元素的最終樣式是由什么決定的:

多重樣式間遵循:繼承來的樣式 < 瀏覽器缺省設置 < 外部樣式表 = 內(nèi)部樣式表 < 內(nèi)聯(lián)樣式

而在同一樣式表中存在:通用選擇器* 0-0-0 < 標簽選擇器,偽元素 0-0-1 < 類選擇器,屬性選擇器,偽類 0-1-0 < ID 選擇器 1-0-0 << !important,其中對于組合選擇器還要用上面提到的方法進行權(quán)重累加后才能判斷

首要原則:高優(yōu)先級覆蓋低優(yōu)先級,同一優(yōu)先級則后來居上

最后,要知道了解樣式的優(yōu)先級,最重要的不是為了用來酷炫和裝逼,而是能讓我們寫出更簡潔高效的代碼,保證在寫代碼時就知道一定會出來什么樣式,而不是等到堆上一堆選擇器后樣式還出不來時,再一臉懵逼地去排查。

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

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

相關(guān)文章

  • CSS 樣式優(yōu)先級

    摘要:下面我們從這兩方面去看看樣式的優(yōu)先級。影響的規(guī)則是優(yōu)先規(guī)則最近的祖先樣式比其他祖先樣式優(yōu)先級高。若同時插有,則再利用規(guī)則判斷優(yōu)先級。 CSS 樣式優(yōu)先級 當創(chuàng)建的樣式表越來越復雜時,一個標簽的樣式將會受到越來越多的影響,這種影響可能來自周圍的標簽,也可能來自其自身。下面我們從這兩方面去看看 CSS 樣式的優(yōu)先級。 CSS 的繼承性 CSS 的繼承特性指的是應用在一個標簽上的那些 CSS...

    王晗 評論0 收藏0
  • css樣式權(quán)重優(yōu)先級css樣式優(yōu)先級

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

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

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

    keithxiaoy 評論0 收藏0
  • 關(guān)于CSS你應該知道基礎知識 - 樣式應用篇

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

    fxp 評論0 收藏0
  • 關(guān)于CSS你應該知道基礎知識 - 樣式應用篇

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

    Michael_Lin 評論0 收藏0

發(fā)表評論

0條評論

jcc

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<