出處:[[子匠_Zijor](http://www.dengzhr.com/)](http://www.dengzhr.com/frontend/css/344)
超鏈接標簽的CSS偽類包括link,visited,hover,active。
1. a偽類解釋:
link:設置a對象在未被訪問前的CSS樣式;
visited:設置a對象在其鏈接地址已被訪問過時的CSS樣式;
hover:設置對象在其鼠標懸停時的CSS樣式;
active:設置對象在被用戶激活(在鼠標點擊與釋放之間發生的事件)時的CSS樣式;
2. a偽類的順序研究
鼠標經過的“未訪問鏈接”同時擁有a:link、a:hover兩種屬性,后面的屬性會覆蓋前面的屬性定義;
鼠標經過的“已訪問鏈接”同時擁有a:visited、a:hover兩種屬性,后面的屬性會覆蓋前面的屬性定義;
a:active是鼠標點擊與釋放之間發生的事件,并擁有鼠標懸停a:hover屬性;
由于偽類的選擇器優先級一致,后面的a鏈接樣式會覆蓋前面的。
所以說,
a:hover定義一定要放在a:link、a:visited的后面,才能在鼠標懸停時,a:hover樣式不被a:link和a:visited樣式覆蓋;
a:visited一定要放在a:link的后面,因為這樣能保證訪問過的鏈接具有a:visited樣式,并能覆蓋a:link默認樣式;
a:active一定要放在a:hover后面。假如a:active放在a:hover前面,由于a:active擁有鼠標懸停a:hover屬性,當鼠標按下時,首先會觸發a:hover事件,然后觸發a:active,但是a:ctive已被a:hover的樣式所覆蓋,因此無法看到a:active的樣式。所以,a:active一定要放在a:hover后面。
綜上所述,a偽類的順序為:a:link > a:visited > a:hover > a:active。
a偽類的順序為:a:link > a:visited > a:hover > a:active
也有人這么記a偽類的順序:
L-V-H-A
即love & hate;
其實理解了原理,便不難記憶了。歸根到底,是觸發事件的先后問題。