CSS 是網(wǎng)頁設(shè)計(jì)中重要的一環(huán),選擇器的優(yōu)先級在樣式控制中扮演著非常重要的角色。
在 CSS 中,有以下優(yōu)先級,它們從高到低排列:
1. !important 2. 行內(nèi)樣式(=“style”)屬性 3. ID 選擇器 4. 偽類 5. 類選擇器,屬性選擇器,偽元素 6. 標(biāo)簽選擇器,偽對象
首先,重申一遍:用 !important 聲明的樣式屬性優(yōu)先級最高。!important 不能被覆蓋,甚至不能被沒它優(yōu)先級高的行內(nèi)樣式覆蓋。
其次,行內(nèi)樣式(寫在HTML里的樣式,即設(shè)置 style 屬性)的優(yōu)先級只次于!important。在行內(nèi)樣式中設(shè)置樣式,可以確保即使其他樣式選擇器也嘗試更改相同元素的樣式,它也不會被覆蓋。
如果沒有任何 !important 或行內(nèi)樣式聲明,那么這個樣式將采用 ID 選擇器。更精確地說,在具有相同樣式屬性的兩個聲明中,即使其他選擇器更具體,ID 選擇器仍然具有比類選擇器,屬性選擇器和標(biāo)簽選擇器高的優(yōu)先級。
接下來是偽類,如 :hover。偽類在選擇器的規(guī)范性上比較模糊,但它們通常被視為具有與類選擇器相似的優(yōu)先級。
之后是類選擇器,屬性選擇器和偽元素:這些選擇器優(yōu)先級相等。在這些規(guī)則之間,選擇器是按在樣式表中出現(xiàn)的順序計(jì)算的,而不是因?yàn)檫x擇器更具體而被優(yōu)先禁止。這種順序優(yōu)先級的計(jì)算方式稱為“后來居上(last one wins)”。
最后,HTML 元素的標(biāo)簽選擇器和偽對象的優(yōu)先級最低。這些選擇器與選擇器的規(guī)范性相同(即 cselector specificity),并且直接取決于元素本身的類型。