css權重及計算

一般而言,大多數前端工程師對css樣式優先級的概念僅僅停留在下一面一張圖上:

注:>表示優先級的一個高低,|表示優先級一樣

!important>行間樣式>id>class|屬性>標籤選擇器>通配符

但實際上,css是有一個權重的。且是可也計算的,這篇資料不是唯一介紹css權重的,但覺得應該是最通俗的。如圖:

注:圖中0,1,10,100並不是一個準確的數字,

注意,列:id,100並不是指id的一個權重值就是100,實際上這個100是一個進制數,不是2進制,也不是10進制;而是256進制,就是0到255後+1纔是1,列如通配符的權重值0到標籤、僞元素的權重值1,中時間實際上差了255。依次類推。

但值得注意的是,!important的權重值雖然是正無窮,但其實也是可也計算的,比如正無窮+1或者*1,就是要比正無窮大,其原理是不管那種語言,在計算機中正無窮的值,都是一個有界的。不是數學上無界的一個慨念。

權重的計算方式:

實際中,最後到底加載的是那一條樣式,是一個相對複雜的問題,就簡單而言就與引入順序有關。本文只是最基礎的那部分;

總結的比較簡陋,本意上是相當於記錄筆記了,如有漏寫、錯誤或不恰當之處歡迎指出批評,感謝!本人覺得前端開發人員在處理樣式優先級上,記住權重就更可也勝任任何樣式優先級的問題了。

標註:1、感謝渡一教育,姬成老師的免費公開課。2、關於css權重值的一個進制,是由一位國外工程師用ie,經過詳細測試得到的;

 

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