CSS 樣式優先級

    CSS加載的優先級

    當創建的樣式表越來越復雜時,一個標簽的樣式將會受到越來越多的影響,這種影響可能來自周圍的標簽,也可能來自其自身。下面我們從這兩方面去看看 CSS 樣式的優先級。

    來源于:

    https://www.runoob.com/w3cnote/css-style-priority.html

    CSS 的繼承性

    CSS 的繼承特性指的是應用在一個標簽上的那些 CSS 屬性被傳到其子標簽上。看下面的 HTML 結構:

    <div><p></p>
    </div>
    

    如果?<div>?有個屬性?color: red,則這個屬性將被?<p>?繼承,即?<p>?也擁有屬性?color: red

    由上可見,當網頁比較復雜, HTML 結構嵌套較深時,一個標簽的樣式將深受其祖先標簽樣式的影響。影響的規則是:

    CSS 優先規則1:?最近的祖先樣式比其他祖先樣式優先級高。

    例1:

    <!-- 類名為 son 的 div 的 color 為 blue -->
    <div style="color: red"><div style="color: blue"><div class="son"></div></div>
    </div>
    

    如果我們把一個標簽從祖先那里繼承來的而自身沒有的屬性叫做"祖先樣式",那么"直接樣式"就是一個標簽直接擁有的屬性。又有如下規則:

    CSS 優先規則2:"直接樣式"比"祖先樣式"優先級高。

    例2:

    <!-- 類名為 son 的 div 的 color 為 blue -->
    <div style="color: red"><div class="son" style="color: blue"></div>
    </div>
    

    選擇器的優先級

    上面討論了一個標簽從祖先繼承來的屬性,現在討論標簽自有的屬性。在討論 CSS 優先級之前,先說說 CSS 7 種基礎的選擇器:

    • ID 選擇器, 如 #id{}
    • 類選擇器, 如 .class{}
    • 屬性選擇器, 如 a[href="segmentfault.com"]{}
    • 偽類選擇器, 如 :hover{}
    • 偽元素選擇器, 如 ::before{}
    • 標簽選擇器, 如 span{}
    • 通配選擇器, 如 *{}

    CSS 優先規則3:優先級關系:內聯樣式 > ID 選擇器 > 類選擇器 = 屬性選擇器 = 偽類選擇器 > 標簽選擇器 = 偽元素選擇器

    例3:

    // HTML
    <div class="content-class" id="content-id" style="color: black"></div>
    
    // CSS
    #content-id {
        color: red;
    }
    .content-class {
        color: blue;
    }
    div {
        color: grey;
    }
    

    最終的 color 為 black,因為內聯樣式比其他選擇器的優先級高。

    所有 CSS 的選擇符由上述 7 種基礎的選擇器或者組合而成,組合的方式有 3 種:

    • 后代選擇符: .father .child{}
    • 子選擇符: .father > .child{}
    • 相鄰選擇符: .bro1 + .bro2{}

    當一個標簽同時被多個選擇符選中,我們便需要確定這些選擇符的優先級。我們有如下規則:

    CSS 優先規則4:計算選擇符中 ID 選擇器的個數(a),計算選擇符中類選擇器、屬性選擇器以及偽類選擇器的個數之和(b),計算選擇符中標簽選擇器和偽元素選擇器的個數之和(c)。按 a、b、c 的順序依次比較大小,大的則優先級高,相等則比較下一個。若最后兩個的選擇符中 a、b、c 都相等,則按照"就近原則"來判斷。

    例4:

    // HTML
    <div id="con-id"><span class="con-span"></span>
    </div>
    
    // CSS
    #con-id span {
        color: red;
    }
    div .con-span {
        color: blue;
    }
    

    由規則 4 可見,<span> 的 color 為 red。

    如果外部樣式表和內部樣式表中的樣式發生沖突會出現什么情況呢?這與樣式表在 HTML 文件中所處的位置有關。樣式被應用的位置越在下面則優先級越高,其實這仍然可以用規則 4 來解釋。

    例5:

    // HTML
    <link rel="stylesheet" type="text/css" href="style-link.css">
    <style type="text/css">
    @import url(style-import.css); 
    div {
        background: blue;
    }
    </style>
    
    <div></div>
    
    // style-link.css
    div {
        background: lime;
    }
    
    // style-import.css
    div {
        background: grey;
    }
    

    從順序上看,內部樣式在最下面,被最晚引用,所以 <div> 的背景色為 blue。

    上面代碼中,@import?語句必須出現在內部樣式之前,否則文件引入無效。當然不推薦使用?@import?的方式引用外部樣式文件,原因見另一篇博客:CSS 引入方式

    CSS 還提供了一種可以完全忽略以上規則的方法,當你一定、必須確保某一個特定的屬性要顯示時,可以使用這個技術。

    CSS 優先規則5:屬性后插有?!important?的屬性擁有最高優先級。若同時插有?!important,則再利用規則 3、4 判斷優先級。

    例6:

    // HTML
    <div class="father"><p class="son"></p>
    </div>
    
    // CSS
    p {
        background: red !important;
    }
    .father .son {
        background: blue;
    }
    

    雖然 .father .son 擁有更高的權值,但選擇器 p 中的 background 屬性被插入了 !important, 所以 <p> 的 background 為 red。

    錯誤的說法

    在學習過程中,你可能發現給選擇器加權值的說法,即 ID 選擇器權值為 100,類選擇器權值為 10,標簽選擇器權值為 1,當一個選擇器由多個 ID 選擇器、類選擇器或標簽選擇器組成時,則將所有權值相加,然后再比較權值。這種說法其實是有問題的。比如一個由 11 個類選擇器組成的選擇器和一個由 1 個 ID 選擇器組成的選擇器指向同一個標簽,按理說 110 > 100,應該應用前者的樣式,然而事實是應用后者的樣式。錯誤的原因是:選擇器的權值不能進位。還是拿剛剛的例子說明。11 個類選擇器組成的選擇器的總權值為 110,但因為 11 個均為類選擇器,所以其實總權值最多不能超過 100, 你可以理解為 99.99,所以最終應用后者樣式。

    怎么用代碼給網站中的文章添加內容目錄? - wordpress教程

    2019-1-19 21:13:59

    網站

    NextCloud - 私有云盤

    2018-7-12 15:10:16

    ??
    Npcink上的部份代碼及教程來源于互聯網,僅供網友學習交流,若您喜歡本文可附上原文鏈接隨意轉載。
    無意侵害您的權益,請發送郵件至 1355471563#qq.com 或點擊右側 私信:Muze 反饋,我們將盡快處理。
    0 條回復 A文章作者 M管理員
      暫無討論,說說你的看法吧
    ?
    個人中心
    購物車
    優惠劵
    今日簽到
    有新私信 私信列表
    搜索
    主站蜘蛛池模板: 国产凸凹视频一区二区| 精品一区二区三区在线观看l | 亚洲国产成人精品久久久国产成人一区二区三区综 | 美女视频黄a视频全免费网站一区| 国产综合无码一区二区三区| 国产成人一区二区三区精品久久 | 一区二区三区无码高清视频| 国产日韩高清一区二区三区| 国产一区二区精品久久凹凸| 久久精品国产一区二区三| 日韩爆乳一区二区无码| 国产成人精品久久一区二区三区| 伊人久久精品一区二区三区| 日韩久久精品一区二区三区| 一区二区三区在线观看视频 | 成人精品视频一区二区三区| 91精品一区二区三区久久久久| 老熟妇高潮一区二区三区| 一区二区三区在线观看视频 | 亚洲一区二区三区四区视频| 尤物精品视频一区二区三区| 国产99精品一区二区三区免费| 亚洲一区二区电影| 爱爱帝国亚洲一区二区三区| 一区二区三区无码视频免费福利| 国产99视频精品一区| 中文字幕一区二区视频| 精品亚洲av无码一区二区柚蜜| 国产亚洲一区二区三区在线| 国产日韩视频一区| 亚洲国产系列一区二区三区 | 无码精品人妻一区二区三区人妻斩 | 中文字幕一区二区免费| 色婷婷亚洲一区二区三区| 久久久久人妻精品一区二区三区| 一区二区三区在线观看视频| 日本免费一区二区三区最新vr| 伊人久久精品无码麻豆一区| 精品国产乱子伦一区二区三区 | 亚洲av午夜精品一区二区三区| 在线视频国产一区|