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规范中,也规定了连接的声明顺序:
参考自:简明现代魔法~略有改动~