CSS特性
- 層疊性
- 繼承性
- 優(yōu)先級(jí)
CSS層疊性
在css樣式中,與樣式的調(diào)用順序無(wú)關(guān),與樣式的定義順序有關(guān)徘跪。
層疊性:瀏覽器解析CSS是從上至下垮庐,當(dāng)CSS沖突時(shí)以最后定義的CSS為準(zhǔn)
CSS繼承性
繼承性(顧名思義:子承父業(yè)):子元素沒(méi)有設(shè)置樣式哨查,那么該子元素受父元素的樣式影響锋八。
哪些屬性可以繼承?
color、width胸竞、text-開(kāi)頭的卫枝、line-開(kāi)頭的、font-開(kāi)頭的
- 這些關(guān)于文字樣式的马篮,都能夠繼承浑测。
- 所有關(guān)于盒子的、定位的岖圈、布局的屬性都不能繼承募强。
- 繼承性是從自己開(kāi)始,直到最小的元素鸠儿。
- 繼承的特殊標(biāo)簽: a標(biāo)簽 標(biāo)題標(biāo)簽(如h1)不會(huì)實(shí)現(xiàn)繼承
CSS優(yōu)先級(jí)
定義CSS樣式時(shí),經(jīng)常出現(xiàn)兩個(gè)或更多規(guī)則應(yīng)用在同一元素上田晚,這時(shí)就會(huì)出現(xiàn)優(yōu)先級(jí)的問(wèn)題汇四。
!important > 內(nèi)聯(lián)樣式 > ID > 類(lèi) | 偽類(lèi) | 屬性選擇 > 標(biāo)簽 | 偽元素 > 繼承 > 通配符
權(quán)重是優(yōu)先級(jí)的算法通孽,具體怎么計(jì)算看下文互捌。在考慮權(quán)重時(shí),需要注意一些特殊情況:
- 繼承的權(quán)重為0 ( 即在嵌套結(jié)構(gòu)中巢价,不管父元素樣式的權(quán)重多大,被子元素繼承時(shí),他的權(quán)重都為0客税,也就是說(shuō)子元素定義的樣式會(huì)覆蓋繼承來(lái)的樣式 )
- 權(quán)重相同時(shí)捏膨,CSS遵循就近原則。排在最后的樣式優(yōu)先級(jí)最大号涯,把前面的樣式覆蓋了目胡。
- !important
!importan給一個(gè)屬性提高權(quán)重,這個(gè)屬性的權(quán)重就是無(wú)窮大链快。
font-size:40px !important;
錯(cuò)誤的:
font-size:40px; !important; → 不能把!important寫(xiě)在外面
font-size:40px important; → 不能忘記感嘆號(hào)
- !important 提升的是一個(gè)屬性誉己,而不是一個(gè)選擇器
- !important 無(wú)法提升繼承的權(quán)重,該是0還是0
- !important 不影響就近原則
- !important 做網(wǎng)站的時(shí)候域蜗,不建議使用巫延,因?yàn)闀?huì)讓css寫(xiě)的很亂。
CSS特殊性(Specificity)
關(guān)于CSS權(quán)重地消,我們需要一套計(jì)算公式來(lái)去計(jì)算,這個(gè)就是 CSS Specificity畏妖,我們稱為CSS 特性或稱非凡性脉执,它是一個(gè)衡量CSS值優(yōu)先級(jí)的一個(gè)標(biāo)準(zhǔn),具體規(guī)范入如下:
specificity用一個(gè)四位的數(shù) 字串(CSS2是三位)來(lái)表示戒劫,更像四個(gè)級(jí)別半夷,值從左到右,左面的最大迅细,一級(jí)大于一級(jí)巫橄,數(shù)位之間沒(méi)有進(jìn)制,級(jí)別之間不可超越茵典。
繼承或者* 的貢獻(xiàn)值 | 0,0,0,0 |
---|---|
每個(gè)元素(標(biāo)簽)貢獻(xiàn)值為 | 0,0,0,1 |
每個(gè)類(lèi)湘换,偽類(lèi)貢獻(xiàn)值為 | 0,0,1,0 |
每個(gè)ID貢獻(xiàn)值為 | 0,1,0,0 |
每個(gè)行內(nèi)樣式貢獻(xiàn)值 | 1,0,0,0 |
每個(gè)!important貢獻(xiàn)值 | ∞ 無(wú)窮大 |
權(quán)重可以疊加
div ul li ------> 0,0,0,3
.nav ul li ------> 0,0,1,2
a:hover -----—> 0,0,1,1
.nav a ------> 0,0,1,1
#nav p ------> 0,1,0,1
數(shù)位之間沒(méi)有進(jìn)制
0,0,0,5 + 0,0,0,5 =0,0,0,10
而不是 0,0, 1, 0, 所以不會(huì)存在10個(gè)div能趕上一個(gè)類(lèi)選擇器的情況
比較規(guī)則
1,0,0,0 > 0,99,99,99统阿。也就是說(shuō)從左往右逐個(gè)等級(jí)比較彩倚,前一等級(jí)相等才往后比。
通配符扶平、子選擇器帆离、相鄰選擇器等的。雖然權(quán)值為0000结澄,但是也比繼承的樣式優(yōu)先哥谷。