a:link a:visited a:hover a:active 樣式順序

a:link{color:yellow;} /* 未訪問的鏈接 */
a:visited {color:black;} /* 已訪問的鏈接 */
a:hover{color:red;} /* 鼠標劃過鏈接 */
a:active{color:green;} /* 已選中的鏈接 */

在CSS定義中:

a:hover 必須被置於 a:link 和 a:visited 之後,纔是有效的
a:active 必須被置於 a:hover 之後,纔是有效的

如果我們將hover放在link是的上面,有意思的事情發生了,hover失效了!(淡定)

這裏寫圖片描述

爲什麼呢?因爲當鼠標經過未訪問的鏈接,會同時擁有a:link、a:hover兩種屬性,a:link離它最近,所以它優先滿足a:link,而放棄a:hover的重複定義。

如果我們將hover放在visited是的上面,更有意思的事情發生了,hover還是失效了!(淡定,沒有我們想的那麼神奇~)

這裏寫圖片描述

因爲當鼠標經過已經訪問過的鏈接,會同時擁有a:visited、a:hover兩種屬性,a:visited離它最近,所以它優先滿足a:visited,而放棄a:hover的重複定義。

究其原因,是css的就近原則“惹的禍”。

總結:在CSS中,如果對於相同元素有針對不同條件的定義,宜將最一般的條件放在最上面,並依次向下,保證最下面的是最特殊的條件。這樣,瀏覽器在顯示元素時,纔會從特殊到一般、逐級向上驗證條件,使我們的每一個CSS語句都起到效果。

一個老外盆友總結了“愛恨原則 LV/HA”,便於記憶。
(Link,Visited,Hover,Active)
實際上,link和visited的位置互換是不會有影響的。

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