天天看點

css選擇器的優先級(在末尾會寫css權重)

js是解釋性語言,一行一行地執行代碼,是以如果多個選擇器作用一個标簽時,誰的優先級大,這個标簽聽誰的。如果優先級相等,那麼後面的代碼将覆寫前面的代碼

1.首先比較id選擇器和class選擇器的優先級:

html代碼:

<div class="class" id="id">123</div>

css代碼:

.class{

font-size:20px;

color:#f00;

}

#id{

font-size:30px;

color:#00f;

}

執行結果:

css選擇器的優先級(在末尾會寫css權重)

出現這種結果有兩種可能,第一種id選擇器的優先級大于class選擇器的優先級;第二種id和class選擇器的優先級相同,id選擇器作用效果凸顯出來了,是以我們将id和class的css代碼換個位置

新的css代碼;

#id{

font-size:30px;

color:#00f;

}

.class{

font-size:20px;

color:#f00;

}

執行結果:

css選擇器的優先級(在末尾會寫css權重)

結論:id選擇器的優先級大于class選擇器的優先級

2.比較class選擇器和标簽選擇器的優先級

html代碼:

<div class="class">123</div>

css代碼:

div{

font-size:20px;

color:#f00;

}

.class{

font-size:12px;

color:#0f0;

}

執行結果:

css選擇器的優先級(在末尾會寫css權重)

我們将css中的div代碼塊和.class代碼塊互換位置,執行結果不變

結論:class選擇器的優先級高于标簽選擇器的優先級

3.比較标簽選擇器和通配符的優先級

html代碼:

<div>123</div>

css代碼:

div{

font-size:20px;

color:#000;

}

*{

font-size:30px;

color:#f00;

}

執行結果:

css選擇器的優先級(在末尾會寫css權重)

結論:标簽選擇器的優先級大于通配符的優先級

4.我們比較行間樣式(style)和id(剛剛比較優先級的老大)

html代碼:

<div style="font-size:30px;color:#000" id="id">

css代碼:

#id{

font-size:50px;

color:#f00;

}

執行結果:

css選擇器的優先級(在末尾會寫css權重)

結論:行間樣式的優先級大于id選擇器的優先級

優先級總結:行間樣式>id>class>标簽>通配符(*)

其實這裡有一個不用這樣比較選擇器優先級的css選擇權重,直接看誰的權重大,誰來作用

css權重:                         

css選擇器                                    權重

!important                                   infinity(無窮大)

行間樣式                                    1000

id                                                100

class/屬性選擇器/僞類選擇器     10

标簽/僞元素                                 1

通配符                                          0

注意:在數學中正無窮加一和正無窮一樣大,但是在計算機中的infinity+1>infinity

1000,100,10,1,0之間的進制是256(一個工程師測出來的)

權重的用法:

html代碼:

<div class="demo">123</div>

css代碼:

div.class{

color:#000;

}

div[class]{

color:#f00;

}

執行結果:

css選擇器的優先級(在末尾會寫css權重)
css選擇器的優先級(在末尾會寫css權重)
css選擇器的優先級(在末尾會寫css權重)
css選擇器的優先級(在末尾會寫css權重)
css選擇器的優先級(在末尾會寫css權重)
css選擇器的優先級(在末尾會寫css權重)

123字型為紅色,因為标簽選擇器+class選擇器的權重等于标簽選擇器加屬性選擇器的權重,後面的代碼覆寫前面的代碼

繼續閱讀