特指度和層疊

2021-10-14 15:04:05 字數 1014 閱讀 9658

如果有多個css規則作用於同乙個元素上,那麼特指度最高的宣告將勝出

特指度值的計算方法

選擇符的每個id屬性值 0,1,0,0

選擇符的每個類屬性值,屬性選擇 或偽類加 0,0,1,0

選擇符中的每個元素和偽元素加 0,0,0,1

鏈結符和通用選擇符不增加特指度

下面將列舉一些例子

h1 

// 0 , 0 , 0 , 1

body h1

// 0 , 0, 0 , 2

上面第二個特指度更大,所以h1為綠色

li #answer 

//0 1 0 1

html > body li

// 0 0 0 3

樣式規則採用第乙個

一些注意:

使用者**會將多個樣式規則分開,在任何情況下, 使用者**都會確定哪些規則與元素匹配,然後找出所有相關的宣告,計算各自的特指度,判斷哪些規則勝出,再把勝出的規則應用到元素上,得到裝飾後的結果。使用者**可以自動處理一切

另,行內樣式的特指度是最高的, 1,0,0,0

以及重要!important 始終比任何非重要的都優先,重要的宣告作為乙個整體,其中的衝突使用特指度解決 

繼承是無特指度,零特指度會戰勝無特指度,通用選擇符是零,所以可以戰勝繼承

如果兩個規則的特指度值相等,那麼該選擇哪乙個呢

權重和**排序

!import 優先順序最高

行內優先順序稍低,

如果兩者都有!import,行內樣式優先順序最高

如果顯示權重相同,那麼就要考慮規則的**

權重從高到低

1.讀者提供的樣式以!important標記的宣告

2.創作人員編寫的樣式中以!important標記的宣告

3.創作人員編寫的常規宣告

4.讀者提供的常規說明

5.使用者**的預設宣告

如果宣告的所有都相同,那麼則特指度值越大越優先,如果仍然相同,後面的樣式覆蓋前面的樣式

CSS 繼承 層疊 特指

1 為什麼要存在這三種機制 繼承 層疊 特指 在乙個較大的樣式表中,可能會有很多條規則都選擇同乙個元素的統一個屬性,但是每個屬性只能按照一種規則來進行顯示,當多種規則應用於同一屬性時,該屬性到底是選擇何種規則呢?為了解決這種衝突,需要確定乙個規則的 優先順序 所以,css提供了這三種機制 2 繼承 ...

css樣式優先順序 特指度

important 優先順序最高 label hover 內聯樣式,即通過元素的style進行設定 id 選擇器,如 id 類選擇器,如 class 屬性選擇器,如 a href segmentfault.com 偽類選擇器,如 hover 偽元素選擇器,如 before 標籤選擇器,如 span ...

Z index 層疊上下文和層疊水平

層疊上下文是乙個概念上的東西,學過編譯原理的人應該對這裡的上下文很清楚,而層疊不過就是乙個詞罷了,解釋一下就是,根據層疊規則決定位置的乙個環境。還需要注意的一點是,具有層疊上下文的元素比普通元素要更靠近眼睛。層疊水平也是乙個概念上的東西,用大白話說就是 在乙個層疊上下文的環境下,裡面的元素在z軸上的...