規則一:由於繼承而發生樣式衝突時,最近祖先獲勝(最近原則)。
CSS的繼承機制使得元素可以從包含它的祖先元素中繼承樣式,考慮下面這種情況:
<html> <head> <title>rule 1</title> <style> body {color:black;} p {color:blue;} </style> </head> <body> <p>welcome to <strong>gaodayue的网络日志</strong> </p> </body> </html>
strong分別從body和p中繼承了color屬性,但由於p在繼承樹上離strong更近,因此strong中的文字最終繼承p的藍色。
規則二:繼承的樣式和直接指定的樣式衝突時,直接指定的樣式獲勝(最直接原則)。
在上面的例子中,假如也指定了strong元素的樣式,如:
strong {color:red;}
那麼根據規則二,strong中的文字最終顯示為紅色。
規則三:直接指定的樣式發生衝突時,樣式權值高者獲勝。
樣式的權值取決於樣式的選擇器,權值定義如下表。
css選擇器 權值
標籤選擇器 1
類別選擇器 10
ID選擇器 100
內嵌樣式 1000
偽元素(:first-child等) 1
偽類別(:link等) 10
可以看到,內嵌樣式的權值>>ID選擇器>>類別選擇器>>標籤選擇器,除此以外,後代選擇者的權值為每項權值總和,例如”#nav .current a」的權值為100 + 10 + 1 = 111。
規則四:樣式權值相同時,後者獲勝。
考慮下面這種情況
<p class="byline">Written by <a class="email" href="mailto:jean@cosmofarmer. com">Jean Graine de Pomme</a></p> .byline a {color:red;}p .email {color:blue;}
「.byline a」與」p .email」都直接指定了上面的a元素,且權值都為11 ,依照規則四,最終顯示藍色。
由於樣式表可以是外部的,也可以是內部的,規則四提醒我們要注意外部樣式表引入的順序(及元素的順序),以及外部樣式表與內部樣式表的出現位置。一般來說,內部樣式表出現在所有外部樣式表的引入之後,一般是在之前。
規則五:!important的樣式屬性不被覆寫。
!important 可以看做是萬不得已的時候,打破上述四個規則的」金手指」。如果你一定要採用某個樣式屬性,而不讓它被覆蓋的,可以在屬性值後面加上!important,以規則四的例子為例,”.byline a {color:red !important;}”可以強行使連結顯示紅色。大多數情況下都可以透過其他方式來控制樣式的覆蓋,不能濫用!important。
以上是分享CSS中關於樣式覆蓋原則的具體介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!