日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

css 优先级

發(fā)布時(shí)間:2025/5/22 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 css 优先级 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

在講CSS優(yōu)先級的優(yōu)先級之前,我們得要了解什么是CSS,CSS是用來做什么的。

  首先,我們對CSS作一個(gè)簡單的說明:CSS是層疊樣式表(Cascading Style Sheets)的簡稱。它的規(guī)范代表了互聯(lián)網(wǎng)歷史上一個(gè)獨(dú)特的發(fā)展階段。現(xiàn)在對于從事網(wǎng)頁制作的朋友來說,應(yīng)該很少?zèng)]有聽說過CSS了,因?yàn)樵谥谱骶W(wǎng)頁過程中我們經(jīng)常需要用到。

  其次:我們能通過CSS為文檔設(shè)置豐富且易于修改的外觀,以減輕網(wǎng)頁制作者的工作負(fù)擔(dān),從而減輕制作及后期維護(hù)的代價(jià)。

  其實(shí)現(xiàn)在還來講CSS是什么,CSS有什么作用完全是多余的,相信從事網(wǎng)頁制作的朋友都已經(jīng)或多或少的接觸過了。

  言歸正傳,我們開始進(jìn)入今天的話題:

  一、什么是CSS優(yōu)先級?

  所謂CSS優(yōu)先級,即是指CSS樣式在瀏覽器中被解析的先后順序。

  二、CSS優(yōu)先級規(guī)則

  既然有優(yōu)先級,那么就會(huì)有一個(gè)規(guī)則來約定這個(gè)優(yōu)先級,而這個(gè)“規(guī)則”就是本次所需要講的重點(diǎn)。

  樣式表中的特殊性描述了不同規(guī)則的相對權(quán)重,它的基本規(guī)則是:
  1. 統(tǒng)計(jì)選擇符中的ID屬性個(gè)數(shù)。
  2. 統(tǒng)計(jì)選擇符中的CLASS屬性個(gè)數(shù)。
  3. 統(tǒng)計(jì)選擇符中的HTML標(biāo)記名個(gè)數(shù)。

  最后,按正確的順序?qū)懗鋈齻€(gè)數(shù)字,不要加空格或逗號,得到一個(gè)三位數(shù)(css2.1是用4位數(shù)表示)。( 注意,你需要把數(shù)字轉(zhuǎn)換成一個(gè)以三個(gè)數(shù)字結(jié)尾的更大的數(shù))。相應(yīng)于選擇符的最終數(shù)字列表可以很容易確定較高數(shù)字特性凌駕于較低數(shù)字的。

  例如:
  1. 每個(gè)ID選擇符(#someid),加 0,1,0,0。
  2. 每個(gè)class選擇符(.someclass)、每個(gè)屬性選擇符(形如[attr=value]等)、每個(gè)偽類(形如:hover等)加0,0,1,0。
  3. 每個(gè)元素或偽元素(:firstchild)等,加0,0,0,1。
  4. 其它選擇符包括全局選擇符*,加0,0,0,0。相當(dāng)于沒加,不過這也是一種specificity,后面會(huì)解釋。

  三、特性分類的選擇符列表

  以下是一個(gè)按特性分類的選擇符的列表:

選擇符

特性值

h1 {color:blue;}

1

p em?{color:purple;}

2

.apple?{color:red;}

10

p.bright?{color:yellow;}

11

p.bright?em.dark?{color:brown;}

22

#id316?{color:yellow}

100


  單從上面這個(gè)表來看,貌似不大好理解,下面再給出一張表:

選擇符

特性值

h1?{color:blue;}1
p em?{color:purple;}1+1=2
.apple {color:red;} 10
p.bright {color:yellow;}1+10=11
p.bright em.dark {color:brown;} 1+10+1+10=22
#id316 {color:yellow} 100

  通過上面,就可以很簡單的看出,HTML標(biāo)記的權(quán)重是1,CLASS的權(quán)重是10,ID的權(quán)重是100,繼承的權(quán)重為0(后面會(huì)講到)。

  按這些規(guī)則將數(shù)字符串逐位相加,就得到最終的權(quán)重,然后在比較取舍時(shí)按照從左到右的順序逐位比較。

  優(yōu)先級問題其實(shí)就是一個(gè)沖突解決的問題,當(dāng)同一個(gè)元素(內(nèi)容)被CSS選擇符選中時(shí),就要按照優(yōu)先級取舍不同的CSS規(guī)則,這其中涉及到的問題其實(shí)很多。

  說到這里,我們不得不說一下CSS的繼承性。

  四、CSS的繼承性

  4.1 繼承的表現(xiàn)

  繼承是CSS的一個(gè)主要特征,它是依賴于祖先-后代的關(guān)系的。繼承是一種機(jī)制,它允許樣式不僅可以應(yīng)用于某個(gè)特定的元素,還可以應(yīng)用于它的后代。例如一個(gè)BODY定義了的顏色值也會(huì)應(yīng)用到段落的文本中。

樣式定義:body {color:#f00;}
舉例代碼:<p>CSS<strong>繼承性</strong>的測試</p>
舉例效果:

  這段代碼的應(yīng)用結(jié)果是:“CSS繼承性的測試”這段話是紅顏色的,“繼承性”幾個(gè)字由于應(yīng)用了<strong>標(biāo)簽,所以是粗體。很顯然,這段文字都繼承了由body {color:#f00;}樣式定義的顏色。這也就是為什么說繼承性是CSS的一部分。

  然而CSS繼承性的權(quán)重是非常低的,是比普通元素的權(quán)重還要低的0。

  我們?nèi)砸陨厦娴呐e例代碼為例:在樣式定義中添加一條:strong {color:#000;}。

舉例效果:

  發(fā)現(xiàn)只需要給<strong>加個(gè)顏色值就能覆蓋掉它繼承自<body>的樣式顏色。由此可見:任何顯示申明的規(guī)則都可以覆蓋其繼承樣式。

  4.2 繼承的局限性

  繼承是CSS重要的一部分,我們甚至不用去考慮它為什么能夠這樣,但CSS繼承也是有限制的。

  有一些屬性不能被繼承,如:border, margin, padding, background等。

樣式定義:div {border:1px solid #000;}
舉例代碼:<div>我是<em>border</em>我是不能被繼承滴</div>
預(yù)期效果:
實(shí)際效果:

  從上面的效果中,我們可以看出,border是不能被繼承的,還有一些其它的屬性也是如此,這里就不一一列舉。

  五、附加說明

  1. 文內(nèi)的樣式優(yōu)先級為1,0,0,0,所以始終高于外部定義。這里文內(nèi)樣式指形如<div style="color:red">blah</div>的樣式,而外部定義指經(jīng)由<link>或<style>卷標(biāo)定義的規(guī)則。
  2. 有!important聲明的規(guī)則高于一切。
  3. 如果!important聲明沖突,則比較優(yōu)先權(quán)。
  4. 如果優(yōu)先權(quán)一樣,則按照在源碼中出現(xiàn)的順序決定,后來者居上。
  5. 由繼承而得到的樣式?jīng)]有specificity的計(jì)算,它低于一切其它規(guī)則(比如全局選擇符*定義的規(guī)則)。
  6. 關(guān)于經(jīng)由@import加載的外部樣式,由于@import必須出現(xiàn)在所有其它規(guī)則定義之前(如不是,則瀏覽器應(yīng)該忽略之),所以按照后來居上原則,一般優(yōu)先權(quán)沖突時(shí)是占下風(fēng)的。

?

優(yōu)先級的實(shí)際應(yīng)用中的問題?

一、css優(yōu)先級

FF:?? ID選擇器(形如#divMain{}) > 類(形如.divSpecial{}) > 標(biāo)簽(形如body{})?
IE:??? 類 > ID選擇器 > 標(biāo)簽
例:
<div id="divMain" class="divSpecial">內(nèi)容兒</div>
在Firefox中表現(xiàn)出 #divMain{} 所定義的樣式,而在IE中則表現(xiàn)出 .divSpecial{} 所定義。

二、CSS文件的優(yōu)先級

1、標(biāo)有"!important"的規(guī)則有最高優(yōu)先級

一個(gè)樣式規(guī)則可以有一個(gè)"important"附帶標(biāo)簽,表示該樣式規(guī)則具有最高優(yōu)先級。例如下面例子中,前景色被標(biāo)為important。

H1{color:black !importan; font-family:sans-serif}

注意:這種聲明容易引起混亂,因此通常使用得較少。

2、創(chuàng)作者規(guī)則優(yōu)先級高于瀏覽者規(guī)則

瀏覽器允許瀏覽者創(chuàng)建樣式規(guī)則以覆蓋系統(tǒng)缺省值。在此情況下,由網(wǎng)頁創(chuàng)作者明確設(shè)定得樣式優(yōu)先級較高,而瀏覽者設(shè)置得樣式規(guī)則優(yōu)先級較低。

3、更特殊得規(guī)則優(yōu)先于不夠特殊的規(guī)則

在決定特殊性時(shí),selector中的ID屬性有最高優(yōu)先級。基于ID selector的優(yōu)先級可通過計(jì)數(shù)Selector中類屬性的數(shù)量確定,數(shù)量越多優(yōu)先級越高。假如規(guī)則仍然無法確定優(yōu)先級,則HTML元素名的數(shù)量決定了特殊性。

4、在同一個(gè)級別的情況下,最后指定的規(guī)則有優(yōu)先權(quán)

假如兩個(gè)或更多的規(guī)定在應(yīng)用了前三個(gè)規(guī)定具有相同優(yōu)先級,則后給出的規(guī)則優(yōu)先于早先給出的規(guī)則。
如果在網(wǎng)頁的HEAD標(biāo)記中同時(shí)使用了STYLE標(biāo)記符(指定嵌入式樣式)和LINK標(biāo)記符(指定鏈接式樣式),并且這兩個(gè)樣式指定中同時(shí)應(yīng)用了具有同一優(yōu)先級別的樣式,則STYLE標(biāo)記符和LINK標(biāo)記符的先后順序?qū)Q定樣式的優(yōu)先級。
例如,如果在LINK所鏈接的樣式表(mycss.css)中定義了以下一條樣式規(guī)則:
H1{color:red}
同時(shí)在嵌入式樣式定義中也定義了一條規(guī)則:
H1{color:yellow}
在網(wǎng)頁中的樣式定義如下所示:
<HEAD>
<LINK rel=stylesheet href="mycss.css" type="text/css">
<STYLE>
<!--
H1{color:yellow}
-->
</STYLE>
</HEAD>
由于STYLE標(biāo)記符中定義的樣式后出現(xiàn),因此它具有更高的優(yōu)先級,所以網(wǎng)頁中H1標(biāo)記符的內(nèi)容將顯示為黃色(yellow)。同樣,如果將Link標(biāo)記符的位置移動(dòng)到<STYLE></STYLE>標(biāo)記符之后,則網(wǎng)頁中H1標(biāo)記符的內(nèi)容將顯示為紅色(red)。
另外,由于直插式樣式(使用HTNL標(biāo)記的style屬性設(shè)置的樣式)的位置最接近于樣式作用的標(biāo)記符,因此它通常具有高優(yōu)先級。

轉(zhuǎn)載于:https://www.cnblogs.com/hainange/archive/2009/03/12/6153218.html

總結(jié)

以上是生活随笔為你收集整理的css 优先级的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。