按照我們對CSS優先權的理解,最後定義的 CSS 樣式將會覆蓋在其之前定義的所有已經存在、或與之衝突的樣式,比如下面這個例子:
代碼如下 |
複製代碼 |
p { color: red; background: yellow } p { color: green }
|
以上的段落最終將呈現綠色的字型,並帶有黃色的背景,這是因為最後定義的 color:green 將之前定義的 red 覆蓋掉了,至於黃色背景為何沒有消失,那是因為第二個 p 的定義中並沒有與之衝突的定義,因此它還是有效。
代碼如下 |
複製代碼 |
p { color: red; background: yellow } p { color: green }
|
[ 可先修改部分代碼 再運行查看效果 ]
或許你認為你已經理解了。你真的懂了嗎?好,我們來做個小測試。
代碼如下 |
複製代碼 |
.red { color: red } .green { color: green } .blue { color: blue } ... <p class="red green blue"></p> <p class="green blue red"></p> <p class="blue red green"></p>
|
請問,最終顯示的時候,上面三個段落中的文字都將呈現何種顏色呢?
請不要急著運行下面的代碼,你思考思考,會是什麼色彩??????
好了,你已經思考定了,我們看啟動並執行效果吧:
代碼如下 |
複製代碼 |
.red { color: red } .green { color: green } .blue { color: blue }
|
[ 可先修改部分代碼 再運行查看效果 ]
答案是它們都顯示為 blue ,也就是藍色,儘管每個段落都以不同順序應用了三個段落樣式,看上去應該按照應用樣式的順序來決定顏色,比如,第一個顯示為 blue ,第二個顯示為 red ,第三個顯示為 green ,其實這是錯誤的,這與應用樣式的順序無關,它們最終都聽從最後指定的樣式,顏色皆為 blue !以後遇到類似的問題請不要苦惱了,因為上面的實驗已經給了你答案。