前端樣式優先級

今天進行了一個前端的筆試,問到了樣式優先級的選擇問題,說真的,我只能憑感覺判斷一些優先級,到了複雜情況還真不一定能判斷出來,所以來總結一下。

一般情況

一般結論就是:
通用選擇器(也就是*)<元素(類型)選擇器(比如p標籤)<類選擇器(.class{…})<屬性選擇器([attribute=value]之類的)<僞類(:hover)<ID 選擇器(#id{…})<內聯樣式(也就是定義在標籤裏面的style)

總的來說就是

外部樣式<內部樣式 <內聯樣式

有個例外的情況,就是如果外部樣式放在內部樣式的後面,則外部樣式將覆蓋內部樣式。

除開以上,還有一個特別需要關注的就是**!important**,只要他出現,那麼一定以他優先

權重表

權重分爲四個等級

  • 第一等:內聯樣式,權重1000,即標籤內的style屬性設置的樣式

  • 第二等:ID選擇器,權重100,例如#id{…}

  • 第三等:類選擇器,僞類選擇器,屬性選擇器,權重10,例如.class{…}、:hover{…}、[arrtibute=value]

  • 第四等:標籤選擇器,僞元素選擇器,權重1,例如div{…}、::after{…}

根據樣式根據以上規則,按照選擇器累加計算權重,例如

#my-id .my-class div p{...}

對於p標籤的來說,這個樣式的權重就是100(#my-id)+10(.my-class)+1(標籤選擇器)+1(標籤選擇器)=112。權值越大,那麼優先級越高。

對於同權重的樣式來說,需應用靠後定義的樣式,這裏靠後是指在樣式文件或者<style>標籤中定義時位置靠後的元素,同時遵循“元素上的style” > “文件頭上的style元素” >“外部樣式文件”的優先級。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章