層疊就是對樣式的層疊。是某種樣式在樣式表中逐層疊加的過程。讓瀏覽器對某個標籤特定屬性值的多個**,最終確定使用那個值。層疊是整個css的核心機制。
1.瀏覽器預設樣式,每個瀏覽器本身就有一套預設的樣式
2.使用者樣式,這對於視障使用者很重要
3.作者樣式。也就是web開發者設計的樣式
瀏覽器層疊各個樣式的順序:
瀏覽器會按照上面的順序,依次檢查每個樣式的**,並更新相關標籤的設定,當整個檢查更新結束後,再將每個標籤以最終設定的樣式顯示出來
規則一:找到應用給每個元素和屬性的所有宣告。
檢查每一條css規則,並標記出受到影響的html標籤
規則二:按照順序和權重排序
瀏覽器依次檢查5個**,匹配並且更新有定義的值,宣告也可以通過!important增加權重,例如
color: red !important;},
這裡a的color值會始終被設定成red。而忽略5個樣式表
規則三:計算選擇符特指度進行排序
特指度(specificity)即一條規則有多麼明確,選擇符的特指度由它所包含多少標籤、類名和id決定
規則四:順序決定權重
在特指度相同的情況下,後宣告的規則勝出
css選擇符的特指度,由它選擇符中包含標籤的多少、class和id決定
特指度的計算
計分公式:「 i-c-e 」 三個字母用「 - 」分隔符組成
①選擇符中有乙個id, " i " 位置加1
②選擇符中有乙個class,「c」 位置加1
③選擇符中有乙個標籤(元素),「 e 」 位置加1
④得到乙個「三位數」,這並非真正意義上的三位數
按選擇符照特指度計算規則,下面是特指計算的例子
p特指度001查理版簡單層疊要點—《css設計指南》一書p.largetext特指度011
p#largetext特指度101
body p#largetext特指度102
body p#largetext ul.mylist特指度113
body p#largetext ul.mylist li特指度114
規則一:包含id的選擇符勝過包含class選擇符,包含class選擇符勝過包含標籤的選擇符
規則二:如果幾個不同**樣式都為同一標籤的同一屬性定義了樣式,行內樣式勝過嵌入樣式,嵌入樣式勝過鏈結樣式,在鏈結樣式中,如果特指度相同,後宣告勝過先宣告
規則三:手動設定樣式勝過繼承樣式
CSS樣式 層疊(三)
前端介面開發的時候,經常會引入很多樣式,而且還有把樣式寫在js裡面控制的 如 使能按鈕 或內嵌到元素的或有的在規則後面加 important,隨著版本的迭代,各種樣式被覆蓋,樣式的調整真的慘目忍睹。css是cascading style sheets 的縮寫,這表示在css中層疊的概念很重要,也就是...
CSS宣告衝突與層疊機制
css宣告衝突 當多個選擇器選中同乙個標籤,如果屬性名相同,屬性值不同時則會產生衝突。舉個例子 html css宣告衝突 css p txt body p 最終文字顏色為紅色 css層疊機制 如果發生宣告衝突瀏覽器會自動觸發自己的層疊機制,在上面例子發生宣告衝突的過程中瀏覽器就觸發了層疊機制,層疊過...
CSS中的樣式層疊機制Cascade
文章位址 樣式衝突是css渲染過程要解決的乙個關鍵問題,樣式衝突主要由兩個原因造成 元素包含了不同物件所賦予的樣式 瀏覽器 使用者 作者。其中,瀏覽器樣式是指不對元素賦予樣式時,元素所表現出來的樣式,也就是瀏覽器賦予的元素預設樣式 使用者樣式是指使用者通過瀏覽器外掛程式設定的樣式,比如色弱者會對文字...