CSS樣式優先順序及權重

2021-10-20 19:39:29 字數 3413 閱讀 7218

一、什麼是繼承性

作用:給父元素設定一些屬性,子元素也可以使用,這個我們就稱之為繼承性。

"color:red"

>

<

/p>

<

/div>

//`` 的 `color: red`屬性,這個屬性將被 `` 繼承,即 `` 也擁有屬性 `color: red`。

「直接樣式」比「祖先樣式」優先順序高。

<

!-- 類名為 son 的 div 的 color 為 blue --

>

"color: red"

>

="son" style=

"color: blue"

>

<

/div>

<

/div>

注意點:

1 並不是所有的屬性都可以繼承,只有以color/font-/text-/line開頭的屬性才可以繼承

2 在css的繼承中不僅僅是兒子可以繼承,只要是後代都可以繼承

3 css繼承性中的特殊性

3.1 a標籤的文字顏色和下劃線是不能繼承的

3.2 h標籤的文字大小是不能繼承的

應用場景**:**

一般用於設定網頁上的一些共性資訊,例如網頁的文字顏色,字型,文字大小等內容。

二、什麼是層疊性

作用:層疊性就是css處理衝突的一種能力

注意點:層疊性只有在多個選擇器選中「同乙個標籤」,然後又設定了「相同的屬性」,才會發生層疊性。後寫的屬性覆蓋掉先寫的屬性。

優先順序作用:當多個選擇器選中同乙個標籤,並且給同乙個標籤設定相同的屬性時,如何層疊就由優先順序來確定

2優先順序判斷的三種方式

2.1是否是直接選中(間接選中就是指繼承)

如果是間接選中,那麼就是誰離目標標籤較近就聽誰的

2.2是否是相同選擇器

如果都是直接選中,並且都是同型別的選擇器,那麼就是誰寫在後面就聽誰的

2.3不同選擇器

如果都是直接選中,並且不是相同型別的選擇器,那麼就會按照選擇器的優先順序來層疊

規則:內聯樣式》id選擇器》類選擇器 = 屬性選擇器 = 偽類選擇器》標籤= 偽元素選擇器》萬用字元》繼承》瀏覽器預設

// html

="content-class" id=

"content-id" style=

"color: black"

>

<

/div>

// css

#content-id

.content-

class

div

//div元素的顏色為black,因為內聯樣式的優先順序高於其他的

!important

作用:用於提公升某個直接選中標籤的選擇器中的某個屬性的優先順序的,可以將被指定的屬性的優先順序提公升為最高

// html

="father"

>

="son"

>

<

/p>

<

/div>

// css

p .father .son

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

注意點:

1 !important只能用於直接選中,不能用於間接選中

2萬用字元選擇器選中的標籤也是直接選中的

3!important只能提公升被指定的屬性的優先順序,其他的屬性的優先順序不會被提公升

4!important必須寫在屬性值的分號前面

5!important前面的感嘆號不能省略

優先順序的權重

作用:當多個選擇器混合在一起使用時,我們可以通過計算權重來判斷誰的優先順序最高

權重的計算規則

1首先先計算選擇器中有多少個id,id多的選擇器優先順序最高

2如果id的個數一樣,那麼再看類名的個數,類名個數多的優先順序最高

3如果類名的個數一樣,那麼再看標籤名稱的個數,標籤名稱個數多的優先順序最高

4如果id個數一樣,類名個數也一樣,標籤名稱個數也一樣,那麼就不會繼續往下計算了,那麼此時誰寫在後面就聽誰的,也就是說,優先順序如果一樣,那麼誰寫在後面聽誰的

// html

"con-id"

>

="con-span"

>

<

/span>

<

/div>

// css

#con-id span

div .con-span

//span顏色為red,#con-id優先順序高於div,所以span的顏色為red

注意點:

只有選擇器是直接選中標籤的才需要計算權重

如果外部樣式表和內部樣式表中的樣式同時使用,這與樣式表在 html 檔案中所處的位置有關。樣式被應用的位置越在下面則優先順序越高。

// html

"stylesheet" type=

"text/css" href=

"style-link.css"

>

"text/css"

>

@import

url(style-

import

.css)

; div

<

/style>

<

/div>

// style-link.css

div

// style-import.css

div

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

錯誤的說法

在學習過程中,你可能發現給選擇器加權值的說法,即 id 選擇器權值為 100,類選擇器權值為 10,標籤選擇器權值為 1,當乙個選擇器由多個 id 選擇器、類選擇器或標籤選擇器組成時,則將所有權值相加,然後再比較權值。這種說法其實是有問題的。比如乙個由 11 個類選擇器組成的選擇器和乙個由 1 個 id 選擇器組成的選擇器指向同乙個標籤,按理說 110 > 100,應該應用前者的樣式,然而事實是應用後者的樣式。

錯誤的原因是:選擇器的權值不能進製。還是拿剛剛的例子說明。11 個類選擇器組成的選擇器的總權值為 110,但因為 11 個均為類選擇器,所以其實總權值最多不能超過 100, 你可以理解為 99.99,所以最終應用後者樣式。

CSS權重以及優先順序

權重的級別劃分包含了所有的css選擇器 如果兩個選擇器作用在同乙個元素上,則權重高者生效 權重的級別根據選擇器被分為四個分類 行內樣式,id,類和屬性,以及元素。當很多規則都被應用到某乙個元素上時,全中決定了那種規則生效。每個選擇器都有自己的權重。每個css規則,都包含了乙個權重級別。如果兩個選擇器...

css樣式優先順序

多重樣式將層疊為乙個 樣式表允許以多種方式規定樣式資訊。樣式可以規定在單個的 html 元素中,在 html 頁的頭元素中,或在乙個外部的 css 檔案中。甚至可以在同乙個 html 文件內部引用多個外部樣式表。層疊次序 當同乙個 html 元素被不止乙個樣式定義時,會使用哪個樣式呢?一般而言,所有...

CSS樣式優先順序

css樣式分為內聯樣式和外部樣式,一般情況下 內聯樣式的優先順序大於外部樣式。即style樣式 id選擇器 class選擇器 元素選擇器。例如 on person num li當對li標籤新增上面兩個樣式時,on樣式中重複的內容是不會生效的。因為.on樣式的優先順序值小於li,它會被li樣式覆蓋。但...