【经验】在CSS中定义a:link、a:visited、a:hover、a:active顺序

曾经用CSS一直没有遇到过这个问题。在近期给一个本科同学做的项目里面。出现一些问题。搜索引擎查了一些站点和资料,发现非常多人问到这个问题。给出的结果我试了试,大部分都不对。
 
给出我试的顺序,可能会对大家有一些帮助:

复制代码
代码
A:link {
 color
: #000000;
 TEXT-DECORATION
: none
}
A:visited 
{
 COLOR
: #000000;
 TEXT-DECORATION
: none
}
A:hover 
{
 COLOR
: #ff7f24;
 text-decoration
: underline;
}
A:active 
{
 COLOR
: #ff7f24;  
 text-decoration
: underline;
}
复制代码

 

 
今天看到一位匿名朋友的问题,又去查了一些资料,这个人讲的很透彻:引自灵眸●第一炉沉香博客
 
a :link、a:hover、a:visited这几个元素,定义CSS时候的顺序不同,也会直接导致链接显示的效果不同。
我想,原因就在于浏览器解释CSS时遵循的“就近原则”。

举例来说:
我想让未訪问链接颜色为蓝色,活动链接为绿色,已訪问链接为红色:
  • 第一种情况:我定义的顺序是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语句都起到效果。


当然,假设有益打乱顺序,也会造成一些特殊的效果。比方,能够为链接制造出下划线颜色与文字颜色的差异。



近日突然发现,原来这个CSS问题早已有高人提出啦。还是个老外呢。

他给总结了一个便于记忆的“爱恨原则”(LoVe/HAte),即四种伪类的首字母:LVHA。
再反复一遍正确的顺序:a:link,a:visited,a:hover,a:active .

 
 
 
 

最后经验补充:

1.鼠标经过的“未訪问链接”同一时候拥有a:link、a:hover两种属性,后面的属性会覆盖前面的属性定义。

2.鼠标经过的“已訪问链接”同一时候拥有a:visited、a:hover两种属性,后面的属性会覆盖前面的属性定义

 

所以说,a:hover定义一定要放在a:link、a:visited的后面,,,

 

 

 

 

 

原文地址:https://www.cnblogs.com/yutingliuyl/p/6797768.html