CSS的層次等級(jí)是指不同選擇器的權(quán)重優(yōu)先級(jí),它們決定了在同一元素上不同樣式的應(yīng)用先后順序。當(dāng)多個(gè)樣式同時(shí)應(yīng)用在同一個(gè)元素上時(shí),權(quán)重最高的樣式會(huì)被優(yōu)先應(yīng)用。
權(quán)重等級(jí): !important 行內(nèi)樣式(style) ID選擇器(#id) 類選擇器(.class)/ 屬性選擇器([attribute=value]) 元素選擇器(element) 偽類選擇器(:hover, :focus等) 通配符選擇器(*) 繼承
其中最高的是!important聲明,它在任何情況下都優(yōu)先于其他樣式。其次為行內(nèi)樣式,即在標(biāo)簽上使用style屬性定義的樣式。ID選擇器和類選擇器/屬性選擇器的優(yōu)先級(jí)相同,但I(xiàn)D選擇器的特殊性更高,因?yàn)镮D應(yīng)該是唯一的。元素選擇器的特殊性較低,當(dāng)所有規(guī)則耗竭完畢,還沒有明確的勝者,元素選擇器的樣式才會(huì)應(yīng)用。偽類選擇器通常用于指定特定狀態(tài)的元素(如:hover狀態(tài)下的鏈接),它的權(quán)重優(yōu)先級(jí)高于元素選擇器,但低于類選擇器/屬性選擇器。通配符選擇器的權(quán)重最低,它會(huì)應(yīng)用到所有元素上。
當(dāng)選擇器具有相同的權(quán)重時(shí),CSS會(huì)依據(jù)就近原則來應(yīng)用樣式。如果一個(gè)樣式聲明出現(xiàn)在style標(biāo)簽中,而另一個(gè)出現(xiàn)在外部CSS文件中,則前者會(huì)優(yōu)先應(yīng)用。如果兩個(gè)樣式規(guī)則聲明位置相同,那么就會(huì)根據(jù)它們?cè)诖a中出現(xiàn)的先后順序來決定優(yōu)先級(jí)。