亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何理解CSS優先級

發布時間:2021-09-24 14:27:57 來源:億速云 閱讀:161 作者:柒染 欄目:web開發

這篇文章給大家介紹如何理解CSS優先級,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

當你將一個樣式添加到元素上卻發現不起作用時,那就是遇到優先級問題了。那么應該如何處理 CSS 優先級問題呢

我們可以通過使用外部樣式、內部樣式、內聯樣式等方法給元素添加指定的樣式,此時的優先級是:

外部樣式 < 內部樣式 < 內聯樣式
這個應該比較容易理解,也就是說離元素距離越近的樣式優先級越大。如:

代碼如下:


<style type="text/css">
 div{color:blue;} //內部樣式
</style>
<link rel="stylesheet" type="text/css" href="mystyle.css"/> //外部樣式(color:green)
<div >my color</div>//內聯樣式

此時顯示的優先級是 red > blue > green。所以 my color 顯示為紅色。

特殊的計算方法

假設有下面這段代碼:

代碼如下:


<style type="text/css">
 div p.classSelector {color: blue}
 #idselector p {color: red}
</style>
<div id="idSelector">
 <p class="classSelector">my color</p>
</div>

我們面對下面的 css,如何判斷優先級呢?

代碼如下:


<style type="text/css">
 div p.classSelector {color: blue}
 #idselector p {color: red}
</style>

這里介紹一種特殊的計算方法:

元素, 偽元素: 1 &ndash; (0,0,0,1)
類, 偽類, 屬性: 1 &ndash; (0,0,1,0)
ID: 1 &ndash; (0,1,0,0)
內聯樣式: 1 &ndash; (1,0,0,0)
這里的屬性指的是:

如何理解CSS優先級

效果如下:

如何理解CSS優先級

優先級從上往下依次增加,至于如何計算,同樣舉例說明:

p: 1個元素&ndash; (0,0,0,1)
div: 1個元素 &ndash; (0,0,0,1)
#idSelector: 1個ID &ndash; (0,1,0,0)
div#idSelector: 1個元素, 1個ID &ndash; (0,1,0,1)
div#idSelector p: 2個元素, 1個ID&ndash; (0,1,0,2)
div#idSelector p.classSelector: 2個元素, 1個類, 1個ID &ndash; (0,1,1,2)
所以現在我們再來看上面的例子:

代碼如下:


 div p.classSelector {color: blue} - (0,0,0,1) + (0,0,0,1) + (0,0,1,0) = (0,0,1,2)
 #idselector p {color: red} - (0,1,0,0) + (0,0,0,1) = (0,1,0,1)

由于優先級上 (0,1,0,1) > (0,0,1,2),所以我們知道最后顯示的顏色為紅色。

繼承

繼承是個比較好理解的概念,即子元素會繼承父元素的樣式。例如:

代碼如下:


<div >
 <p>my color</p>
</div>

上例中的 span 會繼承父元素 div 的樣式。但不是所有的屬性都會默認使用繼承的方式,比如 margin 和 padding 屬性。例如:

代碼如下:


<div >
 <p>my color</p>
</div>

此時,元素 p 并不會繼承父元素 div 的 margin 和 padding 樣式,除非你這么做:

代碼如下:


<div >
 <p >my color</p>
</div>

總結

1.首先找到所有作用在元素上的樣式。(不要忽略來自繼承的樣式)
2.計算樣式的作用距離,距離越近,優先級越大。
3.使用特殊的計算方法來判斷同距離內的樣式。
4.如果計算后的結果相同,那么后聲明的樣式覆蓋先前聲明的樣式。
5.如果某個樣式中設置 !important,則無論它的優先級如何,都以該樣式為準。(除非迫不得已,強烈不建議使用這個方法,因為這無疑是不符合 css 思想的用法)

樣式表允許以多種方式規定樣式信息。樣式可以規定在單個的 HTML 元素中,在 HTML 頁的頭元素中,或在一個外部的 CSS 文件中。甚至可以在同一個 HTML 文檔內部引用多個外部樣式表。當同一個 HTML 元素被不止一個樣式定義時,會使用哪個樣式呢?

一般而言,所有的樣式會根據下面的規則層疊于一個新的虛擬樣式表中,其中數字 4 擁有最高的優先權。

&bull;瀏覽器缺省設置
&bull;外部樣式表
&bull;內部樣式表(位于 <head> 標簽內部)
&bull;內聯樣式(在 HTML 元素內部)

  因此,內聯樣式(在 HTML 元素內部)擁有最高的優先權,這意味著它將優先于以下的樣式聲明:<head> 標簽中的樣式聲明,外部樣式表中的樣式聲明,或者瀏覽器中的樣式聲明(缺省值)。這只是一個大方面的優先級,在前面文章中我們講過CSS有很多選擇器,那么對于同種樣式的CSS,各個選擇器的優先級又是如何呢?

  我們將某一個CSS看成一個三位數,通過比較數字的大小來獲取優先級的高低,那么就會相當簡單。在這里可以通過下面的規則來定義各個選擇器對應的數字。

&bull;百位數是該選擇器上的id的數量的總和;
&bull;十位數是用在該選擇器上的其它屬性選擇器和偽類的總和。這里包括class (.example) 和屬性選擇器(比如 li[id=red]);
&bull;個位數是計算元素(就像table、p、div、*等等)和偽元素(就像:first-line等);
&bull;如果兩個選擇器對應的數字相等,也就是具有同樣的優先級,在樣式表中后面的那個起作用。
&bull;標有"!important"的規則具有最高優先級,例如H1{color:black !importan; font-family:sans-serif},前景色被標為important,這個前景色具有很高的優先級。但是這種聲明容易引起混亂,因此通常使用得較少。
選擇器 數值

h2 {color:blue;} 1
p em {color:purple;} 1 + 1 = 2
.apple {color:red;} 10
p.bright {color:yellow;} 1 + 10 = 11
p.bright em.dark {color:brown;} 1 + 10 + 1 + 10 = 22
#id316 {color:yellow} 100

一般我們還可以通過瀏覽器的插件來查看,到底哪個CSS起作用,比如Firebug(Firefox)、Developer Tools(IE8)等。上面我們介紹到當優先級相同時,哪個CSS起作用取決于所處的位置,通常后面的CSS優先級要高。但是對于IE瀏覽器,具有相同數值的動態CSS取決于添加的順序前后,而不是添加的位置前后;后添加的優先級要高。

原則一 - 繼承不如指定。
 原則二 - #ID > .class > 標簽選擇符。
  原則三 - 越具體越強大。
 原則四 - 標簽#id >#id ; 標簽.class > .class。
 原則五 - 原則一 > 原則二 > 原則三 > 原則四。

關于如何理解CSS優先級就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

css
AI

绥棱县| 武山县| 中山市| 建平县| 凌源市| 萍乡市| 页游| 奇台县| 汶川县| 无为县| 扶绥县| 司法| 贵溪市| 蓝山县| 阿拉尔市| 永年县| 宁海县| 肥东县| 周口市| 广饶县| 分宜县| 通榆县| 福建省| 青岛市| 常山县| 扎赉特旗| 琼中| 射洪县| 昆山市| 温宿县| 会理县| 西丰县| 雷波县| 游戏| 湖南省| 奉贤区| 元谋县| 长泰县| 柞水县| 临江市| 井冈山市|