CSS爲一些特殊效果準備了特定的工具,咱們稱之爲「僞類」。其中有幾項是咱們常常用到的,下面咱們就詳細介紹一下常常用於定義連接樣式的四個僞類,它們分別是:php
由於咱們要定義連接樣式,因此其中必不可少的就是超級連接中的錨標籤--a,錨標籤和僞類連接起來書寫的方法就是定義連接樣式的基礎方法,它們的寫法以下:css
示例:瀏覽器
a:link { color:#FF0000; text-decoration:underline; } a:visited { color:#00FF00; text-decoration:none; } a:hover { color:#000000; text-decoration:none; } a:active { color:#FFFFFF; text-decoration:none; }
上面示例中定義的連接顏色是紅色,訪問事後的連接是綠色,鼠標懸浮在連接上時是黑色,點擊時的顏色是白色。工具
若是正常連接和已訪問過的連接樣式相同,鼠標懸浮和點擊時的樣式相同,也能夠將它們合併起來定義:測試
a:link, a:visited { color:#FF0000; text-decoration:underline; } a:hover, a:active { color:#000000; text-decoration:none; }
沒有規矩不成方圓,雖然連接定義寫好了,但它也是有規則的,若是這四項的書寫順序稍有差錯,連接的效果可能就沒有了,因此每次定義連接樣式時務必確認定義的順序,link--visited--hover-active,也就是咱們常說到的LoVe HAte原則(大寫字母就是它們的首字母)。spa
老外總結了一個便於記憶的「愛恨原則」(LoVe/HAte),即四種僞類的首字母:LVHA。定義A連接樣式的正確的順序:a:link、a:visited、a:hover、a:active。.net
爲何咱們不能改變定義的順序?作下測試就能夠了。code
假設咱們想實現下面的樣式:blog
狀態 | 樣式 | 顏色 |
已訪問 | a:visited | 紅 |
未訪問 | a:link | 藍 |
選定 | a:active | 綠 |
鼠標移入 | a:hover | 黃 |
鼠標移入時,並無變黃。而是當這個連接已經被訪問事後,鼠標移入才變黃:ci
a:visited{color:red;} a:hover{ color:yellow;} a:link{ color:blue;} a:active{ color:green;}
這是由於,一個鼠標通過的未訪問的連接同時擁有a:link,a:hover兩種屬性,在上述的CSS樣式中,a:link離他最近,先知足a:link,而放棄a:hover的重複定義。
而使用LVHA順序聲明後,它首先檢查a:hover的符合標準,先變色。
因此說,爲了符合瀏覽器解釋CSS遵循的"就近原則"。咱們在定義CSS中,宜將最通常的條件放在最上面,並依次向下,最下面放最特殊的。
在W3C規範中,也規定了連接的聲明順序:
參考自:簡明現代魔法~略有改動~