2.1 css優(yōu)先級(jí)規(guī)則概覽
css優(yōu)先級(jí)有6級(jí)。
0級(jí):通配選擇器壁却、選擇符和邏輯組合偽類批狱。
通配選擇器是 * 。
選擇符有+展东、-赔硫、~、空格和 || 盐肃。
邏輯組合偽類有 :not()爪膊、:is()和 :where。這些偽類影響優(yōu)先級(jí)的是括號(hào)里的選擇器砸王。
eg::not([rel=nofollow])
1級(jí):標(biāo)簽選擇器推盛。
2級(jí):類選擇器、屬性選擇器和偽類谦铃。
3級(jí):ID選擇器
4級(jí):內(nèi)聯(lián)選擇器
5級(jí):!important
2.2深入css選擇器優(yōu)先級(jí)
2.2.1 計(jì)算規(guī)則
(1)數(shù)值計(jì)算法
0級(jí)--優(yōu)先級(jí)為0耘成;
1級(jí)--優(yōu)先級(jí)為1;
2級(jí)--優(yōu)先級(jí)為10驹闰;
3級(jí)--優(yōu)先級(jí)為100瘪菌。
(2)后來(lái)居上
優(yōu)先級(jí)數(shù)值相同情況下,越后面優(yōu)先級(jí)越高嘹朗。
1.增加css選擇器優(yōu)先級(jí)的方法
(1)重復(fù)選擇選擇器自身
.foo.foo {}
(2)借助必然會(huì)存在的屬性選擇器
.foo[class] {}
#foo[id] {}
除了這兩種方法师妙,常用的是增加父級(jí)嵌套和增加標(biāo)簽選擇器,但這種方法增加了耦合屹培,降低了可維護(hù)性默穴,不建議使用怔檩。
2.數(shù)值計(jì)算法的點(diǎn)評(píng)
不同級(jí)別的選擇器優(yōu)先級(jí)差距并不是10比1,差距比這大得多壁顶,而是因?yàn)閷?shí)際開(kāi)發(fā)中不會(huì)連續(xù)寫(xiě)10個(gè)而已珠洗。
2.2.2 256個(gè)選擇器的越級(jí)現(xiàn)象
<span id='foo' class='f'>顏色</span>
#foo{ color : #000;}
.f{color : #555;}
在ie瀏覽器下,256個(gè)類選擇器的優(yōu)先級(jí)大于id選擇器的優(yōu)先級(jí)若专,原因是類名是以8字節(jié)存儲(chǔ)的,8字節(jié)所能容納的最大值就是255.
除了ie外蝴猪,其他都使用16進(jìn)制调衰,不會(huì)出現(xiàn)這種情況。
2.3為什么按鈕:hover變色
了解css選擇器的優(yōu)先級(jí)后自阱,日常工作就知道是怎么回事了嚎莉。
是因?yàn)槟J(rèn)的優(yōu)先級(jí)高于設(shè)置的優(yōu)先級(jí),所以顯示不正確沛豌。