在CSS中,我們通過選擇器來指定CSS樣式應(yīng)該應(yīng)用到哪些元素上。選擇器可以是元素類型、類、ID、屬性等等。但當(dāng)同一個元素被多個選擇器標(biāo)定時,CSS規(guī)定了一個優(yōu)先級來確定哪個樣式會被最終應(yīng)用。
CSS規(guī)定,選擇器的優(yōu)先級是由若干個因素組成的。首先是選擇器本身的權(quán)重。元素選擇器的權(quán)重最低,類選擇器次之,ID選擇器再次之。CSS還允許通過添加!important關(guān)鍵字來提高某個樣式的優(yōu)先級,但是過度使用這個關(guān)鍵字可能會影響代碼的可維護性。
/* 以下是一些具有不同權(quán)重的選擇器示例 */ p { color: red; } /* 權(quán)重為1 */ .blue { color: blue; } /* 權(quán)重為10 */ #header { color: green; } /* 權(quán)重為100 */ .blue { color: yellow!important; } /* 添加!important關(guān)鍵字來覆蓋其他樣式的優(yōu)先級 */ #header.blue { /* 選擇器組合可以導(dǎo)致更高的優(yōu)先級 */ color: purple; } /* 權(quán)重為110 */
如果有多個選擇器應(yīng)用到同一個元素上,CSS還規(guī)定了優(yōu)先級的計算規(guī)則。首先是權(quán)重高的選擇器會覆蓋權(quán)重低的選擇器。如果兩個選擇器的權(quán)重相同,那么后定義的選擇器會覆蓋之前的選擇器。如果定義在同一個樣式塊中的兩個樣式指定了相同的屬性,那么后定義的樣式會覆蓋之前的樣式。
為了避免選擇器權(quán)重導(dǎo)致的混淆,編寫CSS時應(yīng)該盡量采用簡單明了的選擇器。在需要覆蓋其他選擇器時,應(yīng)該先考慮修改已有的樣式,而不是添加!important關(guān)鍵字。只有當(dāng)必須要提高某個樣式的優(yōu)先級時,才應(yīng)該使用!important關(guān)鍵字。