CSS 選擇器權重計算規則

  其實,CSS有本身的優先級計算公式,而不單單是行間>內部>外部樣式;ID>class>元素。php

1、樣式類型css

  一、行間html

<h1 style="font-size:12px;color:#000;">個人行間CSS樣式。</h1>

 

  二、內聯瀏覽器

<style type="text/css">
   h1{font-size:12px;
      color:#000;
      }
</style>

   三、外部學習

<link rel="stylesheet" href="css/style.css">

2、選擇器類型spa

  一、ID  #id.net

  二、class  .classcode

  三、標籤  phtm

  四、通用  *blog

  五、屬性  [type="text"]

  六、僞類  :hover

  七、僞元素  ::first-line

  八、子選擇器、相鄰選擇器

3、權重計算規則

  1. 第一等:表明內聯樣式,如: style=」」,權值爲1000。
  2. 第二等:表明ID選擇器,如:#content,權值爲0100。
  3. 第三等:表明類,僞類和屬性選擇器,如.content,權值爲0010。
  4. 第四等:表明類型選擇器和僞元素選擇器,如div p,權值爲0001。
  5. 通配符、子選擇器、相鄰選擇器等的。如*、>、+,權值爲0000。
  6. 繼承的樣式沒有權值。

4、比較規則

  1. 1,0,0,0 > 0,99,99,99。也就是說從左往右逐個等級比較,前一等級相等才日後比。
  2. 不管是行間、內部和外部樣式,都是按照這個規則來進行比較。而不是直觀的行間>內部>外部樣式;ID>class>元素。之因此有這樣的錯覺,是由於確實行間爲第一等的權重,因此它的權重是最高的。而內部樣式可能通常寫在了外部樣式引用了以後,因此覆蓋掉了以前的。
  3. 在權重相同的狀況下,後面的樣式會覆蓋掉前面的樣式。
  4. 通配符、子選擇器、相鄰選擇器等的。雖然權值爲0000,可是也比繼承的樣式優先。

5、!important

  1. !important 的做用是提高優先級,換句話說。加了這句的樣式的優先級是最高的(比內聯樣式的優先級還高)。
    <style>
        p{
            color:red !important;
        }
    </style>
    <p style="color:blue;">我顯示紅色</p>    
  2. ie7+和別的瀏覽器對important的這種做用的支持度都很好。只有ie6有些bug
    p{
      color:red !important;
      color:blue;    
    }//會顯示blue

    可是這並不說明ie6不支持important,只是支持上有些bug。看下面

    p{
      color:red !important;  
    }
    p{
      color:blue;  
    }
    //這樣就會顯示的是red。說明ie6仍是支持important的。

6、實例

  1.  a{color: yellow;} /*特殊性值:0,0,0,1*/
     div a{color: green;} /*特殊性值:0,0,0,2*/
    .demo a{color: black;} /*特殊性值:0,0,1,1*/
     .demo input[type="text"]{color: blue;} /*特殊性值:0,0,2,1*/
     .demo *[type="text"]{color: grey;} /*特殊性值:0,0,2,0*/
     #demo a{color: orange;} /*特殊性值:0,1,0,1*/
     div#demo a{color: red;} /*特殊性值:0,1,0,2*/
    
    <a href="">第一條應該是黃色</a> <!--適用第1行規則-->
    <div class="demo">
        <input type="text" value="第二條應該是藍色" /><!--適用第四、5行規則,第4行優先級高-->
        <a href="">第三條應該是黑色</a><!--適用第二、3行規則,第3行優先級高-->
    </div>
    <div id="demo">
        <a href="">第四條應該是紅色</a><!--適用第五、6行規則,第6行優先級高-->
    </div>

本文是一個學習筆記。有什麼不對的地方,但願你們指出。

參考

 

http://www.cnblogs.com/wangmeijian/p/4207433.html   By 王美建 from 博客園 原創文章

 

http://www.nowamagic.net/csszone/css_SeletorPriorityRules.php   簡明現代魔法

相關文章
相關標籤/搜索