a:link、a:visited、a:hover、a:avtive的正确使用顺序


1.<a>标签
<a>标签的功能:
<a>标签定义超链接,用于从一张页面链接到另一张页面。
<a>元素最重要的属性是href属性,它指示链接的目标。
所有浏览器中,链接的默认外观是:

  • 未被访问的连接带有下划线而且是蓝色的
  • 已被访问的链接带有下划线而且是紫色的
  • 活动链接带有下划线而且是红色的

<a>标签还有一个很重要的属性:target,它用于规定在何处打开链接文档,取值有:_blank;_parent;_self;_top。这个我们后面也会总结一下。
2. a链接的四种状态
伪类是css用于向某些选择器添加的特殊效果。
a标签中有四个:link、visited、hover、active
(1)link
说明:设置a对象在其链接地址未被访问前的样式属性。
(2)visited
说明:设置a对象在其链接地址已被访问过时的样式属性。
(3)hover
说明:设置对象在其鼠标悬停时的样式表属性。
(4)说明:设置对象在被用户激活(在鼠标点击与释放之间发生的事件)时的样式表属性。
定义css时候的顺序不同,也会直接导致链接显示的效果不同。原因可能在于浏览器解释css时遵循的“就近原则”。正确顺序:a:link、a:visited、a:hover、a:active
解释:

  • link:链接平常的状态
  • visited:链接被访问过后
  • hover:鼠标放到连接上的时候
  • active:链接被按下的时候
    举例来说:
    我相仿未被访问链接为蓝色, 活动链接为绿色,已访问链接为红色:

第一种情况:我定义的顺序是a:visited、a:hover、a:link,这时会发现:把鼠标放到未访问过的蓝色链接上时,他并不变成绿色,只有放在已访问的红色链接上,链接才会变绿色;
第二种情况:我把css定义顺序调整为:a:link、a:visited、a:hover,这时,无论你鼠标经过的链接有没有被访问过,他都会变成绿色。

这是因为,一个鼠标经过的未访问链接同时拥有a:link、a:hover两种属性,在第一种情况下,a:link离他最近,所以他优先满足a:link,而放弃a:hover的重复定义。
在第二种情况,无论连接有没有被访问过,他首先要检查是否符合a:hover的标准(即是否有鼠标经过它),满足则变成绿色,不满足则继续向上查找,一直找到满足条件的定义为止。

在css中,如果对于相同元素有针对不同条件的定义,宜将最一般的条件放在最上面,并依次向下,保证最下面的是最特殊的条件,这样,浏览器在显示元素时,才会从特殊到一般、逐级向上验证条件,才会是你的每一个css语句都起到效果。当然,如果故意打乱顺序,也会造成一些特殊的效果,比如,可以执照出下划线颜色与文字颜色的差异。

有老外提出一个便于记忆的“爱恨原则”(LoVe/HAte),即四种伪类的首字母:LVHA。

再重复一边正确的顺序:a:link、a:visited、a:hover、a:active。

经验补充

  • 鼠标经过的“未访问链接”同时拥有a:link、a:hover两种属性,后面的属性会覆盖前面的属性定义;
  • 鼠标经过的“已访问链接”同时拥有a:visited、a:hover 两种属性,后面的属性会覆盖前面的属性定义;
    所以说:a:hover定义一定要放在a:link、a:visited的后面!
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容