1. 程式人生 > >選擇器優先級 與 4中引入樣式方式

選擇器優先級 與 4中引入樣式方式

兩個 gray -c 等級 繼承 gree gre 外部 link

  這裏涉及css樣式加載順序、覆蓋規則,以及優先級提升問題;

  1. css樣式加載順序

// a.css
.one{
    color: red;
}

// c.css
.three{
    color: green;
}

<head>
    <link href=‘‘./a.css">
    
    <style>
          .two{
              color:gray;
          }
    </style>

    <link href="./c.css"
> </head> <body> <div class="one two three"></div> <div class="one three two"></div> <p class="two one three" style="color:yellow;"></p> </body>

  結果: 這兩個<div>字體顯示的都是green;<p>顯示的是yellow;

  原因如下:

    樣式的加載順序是 a.css ---> <style> ---> c.css;這個加載順序很重要,因為涉及到覆蓋規則;

    選擇器的優先級與在元素中書寫順序無關;class="one two three",class="three two one"等順序不影響優先級;

同級選擇器中,選擇器書寫順序越靠後,優先級越高!後面的總是覆蓋前面的;【覆蓋規則】

    元素中的style樣式優先級最高!

  2.幾點說明

    2.1 "元素中的style" > "文件頭中的style" > "外部文件中的樣式"

這句話很概況性,存在讓大家誤解的地方;其中“元素中的style”優先級最高是正確的,但是後面關於頭文件中的style、link引用的外部文件就不正確的;

      不正確的原因:與css樣式加載順序有關,比如上面的舉例中,c.css文件晚於<style>加載;開篇例子已經說明了這個問題;

    2.2 元素選擇器越精確,對應的樣式優先級越高

      id選擇器 > 類選擇器 > 元素選擇器

      元素中的樣式大於id選擇器; <p class="two one three" style="color:yellow;"></p>

    2.3 優先級提升 !important

      屬性使用了!important,此時此屬性優先級最高

  3.選擇器權值

    每種選擇器都有對應的權值;總共有四類:

    技術分享圖片

    

    4個等級的定義如下:

    1. 第一等:代表內聯樣式,如: style=””,權值為1000
    2. 第二等:代表ID選擇器,如:#content,權值為100
    3. 第三等:代表偽類和屬性選擇器,如.content,權值為10。
    4. 第四等:代表類型選擇器和偽元素選擇器,如div p,權值為1。
// d.css
p.five{
    color:red;
}
// 權值 p=1 .five=10  ,valTotal=10+1=11

<p style="color:white;"></p>  // 權值1000

  4.就近原則

    樣式優先級 理論上:行內>內嵌>鏈接>導入,

    但實際上可能有所變化,實際上:內嵌、鏈接、導入在同一個文件頭部,誰離相應的代碼近,誰的優先級高

  CSS 優先級法則:

    A 選擇器都有一個權值,權值越大越優先;

    B 當權值相等時,後出現的樣式表設置要優於先出現的樣式表設置;[就近原則、覆蓋原則]

    C 創作者的規則高於瀏覽者:即網頁編寫者設置的CSS 樣式的優先權高於瀏覽器所設置的樣式;

    D 繼承的CSS 樣式不如後來指定的CSS 樣式;

    E 在同一組屬性設置中標有!important”規則的優先級最大;

css引入樣式的四種方式

  1. 內聯樣式

    <div style="color:red;"></div>

  2.內部引入

    <head>

      <style>

          。。。

      </style>

    </head>

  3. 外部鏈接 <link>

    <link href="./ab.css">

  4. 外部引入 @import url()

    這種語法可以寫在外部文件中、<style></style>,但是有點要註意:要寫在這些部分的首行,否則無效

選擇器優先級 與 4中引入樣式方式