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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

CSS选择器特殊性与重要性

發(fā)布時間:2023/12/13 综合教程 32 生活家
生活随笔 收集整理的這篇文章主要介紹了 CSS选择器特殊性与重要性 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

特殊性

在編寫CSS代碼的時候,我們會出現(xiàn)多個樣式規(guī)則作用于同一個元素的情況,例如

<!-- HTML -->
<header>
  <nav class="nav-main" id="navigation">Here background</nav>
</header>

/* CSS */
header nav {
  background-color: red;
}

#navigation {
background-color: green;
} .nav-main { background-color: blue; }

以上三個樣式規(guī)則都會作用于 ID 值為 "navigation" 的 nav 標簽,最終哪個樣式規(guī)則會生效呢,這取決于選擇器的特殊性(或優(yōu)先級)高低,選擇器特殊性高的樣式會覆蓋特殊性低的樣式,經(jīng)過測試 nav 標簽的背景會顯示為 green 綠色。

那么選擇器特殊性是如何計算的呢?

通常,我們使用四個以逗號分隔的數(shù)字來表示特殊性,比如:

每個元素或偽元素選擇器貢獻特殊性為 0,0,0,1
每個類、偽類或者屬性選擇器的特殊性為 0,0,1,0
每個ID選擇器的特殊性為 0,1,0,0
結(jié)合符和通配符的對特殊性沒有貢獻

計算一個組合選擇器的特殊性的時候就先計算各種選擇器的數(shù)量以及對應(yīng)的特殊性再相加,比如

div ul li              /* 0,0,0,3    3個元素選擇器 */

div.aside ol li        /* 0,0,1,3    1個類選擇器,3個元素選擇器 */

a:hover                /* 0,0,1,1    1個偽類選擇器,1個元素選擇器 */

div.navlinks a:hover   /* 0,0,2,2    1個類選擇器,1個偽類選擇器,2個元素選擇器 */

.affix.top             /* 0,0,2,0    多類選擇器 注 */

input[type="text"]     /* 0,0,1,1    1個屬性選擇器,1個元素選擇器 */

input[name="sex"][type="radio"]
/* 0,0,2,1 2個屬性選擇器,1個元素選擇器 */ #title em /* 0,1,0,1 1個 ID 選擇器,1個元素選擇器 */ h1#title em /* 0,1,0,2 1個 ID 選擇器,2個元素選擇器 */ * /* 0,0,0,0 1個通用選擇器 */

注:多類選擇器有多少個類就計算多少個類,不支持多類選擇器的 IE6 會理解為一個類

比較選擇器特殊性高低直接從左向右依次比較,數(shù)字大的則優(yōu)先級更高,如果相同就比較下一位,所有位都相同則優(yōu)先級是一樣高,當選擇器優(yōu)先級一樣高的時候后申明的樣式會覆蓋前面申明的樣式

每個級別的優(yōu)先級值是相互獨立的,13個元素選擇器寫在一堆也不會比1個類選擇器的特殊性高

第一個0是用于行內(nèi)樣式的,且僅用于行內(nèi)樣式

<nav></nav> <!-- 1,0,0,0 -->

重要性

有一樣東西可以無視特殊性,那就是 !important。使用 !important可以把任何樣式規(guī)則標記為重要

.nav-main {
  background-color: blue !important;
  color: #666;
}

基本上,任何重要的樣式規(guī)則都可以覆蓋沒有標記為重要的樣式規(guī)則,

<div id="gohome"><a href="/" id="home">Home</a></div>
div#gohome a#home {
  color: red;
}

div a {
  color: green !important;
}

上面的代碼會得到一個綠色 green 的鏈接,第一個規(guī)則有非常高的特殊性(0,2,0,2),

但是在 !important面前一樣沒用,除非我們給第一個規(guī)則也標記為重要

div#gohome a#home {
  color: red !important;
}

div a {
  color: green !important;
}

這時候鏈接就變?yōu)榧t色 red 了,都標記為重要的情況下,則會使用前面提到的特殊性規(guī)則來解決,

所以使用 !important的時候應(yīng)當權(quán)衡,盡量不要用

另外,IE6是支持 !important的,只是不完全支持而已,當在同一個選擇器中,在標記為重要的樣式規(guī)則之后又重新定義了此樣式則 !important將失效

.header {
  color: red !important;     /* 標準瀏覽器 red */
  color: green;              /* IE6 green !important 失效 */
}

再有就是 IE6/7 可以允許在 !important 后面添加一些文字,依然能識別

.header {
  color: red !important ie;     /* ie6/7 red */
}

總結(jié)

以上是生活随笔為你收集整理的CSS选择器特殊性与重要性的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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