欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

CSS規(guī)則層疊時的優(yōu)先級算法

 更新時間:2008年04月08日 20:48:28   作者:  
CSS 規(guī)則的優(yōu)先級是Web前端開發(fā)人員必須理解的一個概念,我們常用的添加樣式的方法有4種。
inline style 
embeded style 
external style 
user style 
inline style是丑陋的,它們穿梭在HTML文檔中,與HTML元素扭成一團,給Web前端開發(fā)人員造成了許多麻煩。它們往往以這樣的面目出現(xiàn):

<p style="color:red;">This is a paragraph.</p>
embeded style比inline style紳士一些,它們也寄宿在HTML文檔中,但是它們不屑于與HTML元素扭成一團。它們往往在 <style> 元素中出現(xiàn):

<style type="text/css" media="screen">
    p{
        color : red;
    }
</style>
external style是個貴族,它不愿意同HTML呆在一起,所以干脆以外部文件的形式獨立存在。通常我們使用 <link> 元素或者@import語句將它們導入HTML。

<link rel="stylesheet" type="text/css" href="style.css" media="screen" />
我們應當盡可能使用external style,我想理由有很多,大家都知道,我也就不重復了。

還有一種user style與以上三者略有不同,如果你使用IE瀏覽器,那么你可以在Tools – Internet Options – General – Appearance – Accessibility – User style sheet 下找到添加user style的地方(原諒我沒有中文版的IE瀏覽器)。

既然我們有如此多的添加style的方法,那么難以避免樣式會產(chǎn)生層疊。如:

<p class="intro" style="color:red;">This is a paragraph.</p>
我們在使用以上inline style的同時,又在我們的external style中使用了:

p{
    color : yellow;
}
我們甚至還在擁有 class="intro" 的 <p> 元素上應用了:

p.intro{
    color : blue;
}
這樣我們就 在同一元素的同一屬性 color 上,擁有多條CSS規(guī)則指定了值 。這種情況被稱為層疊(Cascading)。當層疊發(fā)生時,CSS Parser將根據(jù)優(yōu)先級算法來確定最終選用的值。 

優(yōu)先級算法按照先后順序考慮以下三個方面:

CSS規(guī)則的重要性和來源 
CSS規(guī)則的特殊性 
CSS規(guī)則在文檔中出現(xiàn)的順序 
算法過程分為4步:

1、針對某一元素的某一屬性,列出所有給該屬性指定值的CSS規(guī)則。如上例中,在 class="intro" 的 <p> 元素上,有三條CSS規(guī)則指定了 color 屬性。

2、根據(jù)聲明的重要性和來源進行優(yōu)先級排序

重要性有兩種:

important 
normal(即非important) 
在CSS規(guī)則后添加 !important 的重要性要高于沒有添加的。

來源有三種:

user agent stylesheet – 瀏覽器默認樣式 
author stylesheet – 開發(fā)人員定義的樣式 
user stylesheet – 用戶在瀏覽器中定義樣式 
重要性和來源的優(yōu)先級排序從低到高是:

user agent stylesheet 
user style sheets中的normal規(guī)則 
author style sheets中的normal規(guī)則 
author style sheets中的important規(guī)則 
user style sheets中的important規(guī)則 
經(jīng)過以上排序,如果有一條CSS規(guī)則的優(yōu)先級高于其他所有競爭規(guī)則,那么算法結束,返回該最高優(yōu)先級指定的值。如果有多條CSS規(guī)則具有最高優(yōu)先級,那么它們將要繼續(xù)競爭下去,算法將進入第3步。

3、按照特殊性(Specificity)排序

CSS將計算多條規(guī)則中指定每一規(guī)則的selector的特殊性值,該值越高,優(yōu)先級越高。

特殊性值是一個由4個整數(shù)組成的一個類似數(shù)組的值:a,b,c,d,其中a的權重最高,依次類推,d的權重最低。selector特殊性值的計算方法是:

如果該規(guī)則是一條inline style,那么a = 1 
如果該規(guī)則由selector指定,selector中出現(xiàn)的id selector的數(shù)量就是b的值 
如果該規(guī)則由selector指定,selector中出現(xiàn)的屬性selector(包括class selector)或者偽類selector的數(shù)量總和就是c的值 
如果該規(guī)則由selector指定,selector中出現(xiàn)的元素selector或者是偽元素selector的數(shù)量總和就是d的值。 
universal selector * 的特殊性值為0,0,0,0 
官方網(wǎng)站 提供了一些例子可以加深理解。

在根據(jù)特殊性值排序時,由于a的權重最高,因此首先比較a,在a相同的情況,在比較b,依次類推。因此不論b,c,d值有多大,inline style總是具有最高的特殊性。

如果根據(jù)以上特殊性排序后,有一條CSS規(guī)則的優(yōu)先級高于其他所有競爭規(guī)則,那么算法結束,返回該最高優(yōu)先級指定的值。如果有多條CSS規(guī)則具有最高優(yōu)先級,那么它們將要繼續(xù)競爭下去,算法將進入第4步。

4、比較CSS規(guī)則在文檔中出現(xiàn)的順序

出現(xiàn)在后的總是比出現(xiàn)在前的具有更高的優(yōu)先級,因此出現(xiàn)在最后的那條語句將被作為該屬性的值。

至此,算法結束。我徹底暈了。

相關文章

  • html中的form不提交(排除)某些input

    html中的form不提交(排除)某些input

    在Html的form點擊提交時,form內(nèi)所有Input?filed的內(nèi)容,只要是有name屬性的,并且沒有disabled屬性的,都會被提交,即通過網(wǎng)絡發(fā)送到指定的URL。這是正常情況,如果有不想提交的input屬性呢?
    2022-12-12
  • CSS中幾種常見的注釋

    CSS中幾種常見的注釋

    CSS中幾種常見的注釋...
    2007-05-05
  • css列表前的小方塊

    css列表前的小方塊

    列表前的小方塊有的用圖片,但我最近做的項目很快用圖片就被我否則掉了,因為有多套風格,如果有4套難道要做4組圖片?那以后呢?
    2008-07-07
  • 讓2個DIV居中并排顯示

    讓2個DIV居中并排顯示

    [藍色]讓2個DIV居中并排顯示...
    2006-11-11
  • 頁里面 CDATA的作用說明

    頁里面 CDATA的作用說明

    頁里面 CDATA的作用說明...
    2007-03-03
  • 關于&lt; tbody &gt;的一個實例,很實用。

    關于&lt; tbody &gt;的一個實例,很實用。

    tbody Tab選項卡效果代碼關鍵只是在<tbody>和選項卡的設置上。我在6個<tr></tr>段分別設置了<tbody></tbody>,目的是為了讓一個javascript程序調(diào)用6個選項卡的時候可以循環(huán)設置tBodies屬性。調(diào)用的時候是采用了遍歷:將6個tBodies先全部都初始化為display='none',然后緊接著將tBodies[n]設置為display='block',將這一個tBodies顯示出來。
    2008-03-03
  • CSS優(yōu)化2-(常用CSS縮寫語法總結)

    CSS優(yōu)化2-(常用CSS縮寫語法總結)

    CSS優(yōu)化2-(常用CSS縮寫語法總結)...
    2007-05-05
  • css靜態(tài)濾鏡 + A:Hover

    css靜態(tài)濾鏡 + A:Hover

    css靜態(tài)濾鏡 + A:Hover...
    2006-11-11
  • xhtml+css網(wǎng)頁制作中常見問題解決方法

    xhtml+css網(wǎng)頁制作中常見問題解決方法

    xhtml+css頁面制作過程中問題的解決方案,說是解決方案應該有點過了,充其量只不過是給剛剛開始學標準頁面制作的朋友們的一些小建議,如果講得不對的地方請多多包涵,當然也可以提出你們更好的方法,大家相互學習交流,共同成長!
    2008-10-10
  • 幾乎被設計師遺忘了的標簽fieldset legend

    幾乎被設計師遺忘了的標簽fieldset legend

    幾乎被設計師遺忘了的標簽fieldset legend...
    2007-11-11

最新評論