在前端设计中我们经常遇到这样的问题:给链接添加了a:hover,但是鼠标移上去却完全没反应。归根结底是锚伪类书写顺序造成的。
:link | 适用于未被访问的链接; |
:visited | 适用于已经访问过的链接; |
:hover | 鼠标指针指向一个元素,还未激活; |
:active | 适用于一个元素被选择但未被释放; |
W3C制定的CSS21规范中指出:四个伪类的声明顺序应该是:’:link’、’:visited’、’:hover’、’:active’。 A:hover必须放置在A:link和A:visited之后,否则将隐藏A:hover内定义的相同规则。同理,A:active应在A:hover 之后,否则A:active中的相同规则将被隐藏。
需要说明的是在IE浏览器中:hover无论你放在什么位置都有效果,具体差异你可以亲自试一试。
推荐大家以后按照 L-V-H-A 的顺序来定义 <a> 标签的伪类样式, 一个帮助记忆正确顺序的窍门: 记住”LoVe/HAte”原则 , 灰常形象啊。