【经验】在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的后面,,,

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-28 20:51:59

【经验】在CSS中定义a:link、a:visited、a:hover、a:active顺序的相关文章

css中链接的4个状态 link、visited 、hover、active 顺序与设置

link       未点时链接色visited  已点过的链接色hover   光标放入链接上的色active   点击时的样式 顺序一定要按link.visited.hover.active来设置 1)普通形式a:link{}a:visited{}a:hover{}a:active{} <a href="...">...</a> 2)单个classa.clsname{}a.clsname:link{}a.clsname:visited{}a.clsname:

a:link,a:visited,a:hover,a:active

a:link,a:visited,a:hover,a:active 1:解释 link:连接平常的状态 visited:连接被访问过之后 hover:鼠标放到连接上的时候 active:连接被按下的时候      详细的: :hover版本:CSS1/CSS2 兼容性:IE4+ NS4+ 语法: Selector : hover { sRules } 说明: 设置对象在其鼠标悬停时的样式表属性. 在CSS1中此伪类仅可用于a对象.且对于无href属性(特性)的a对象,此伪类不发生作用.在CSS2

在CSS中定义a:link、a:visited、a:hover、a:active顺序

1.鼠标经过的“未访问链接”同时拥有a:link.a:hover两种属性,后面的属性会覆盖前面的属性定义: 2.鼠标经过的“已访问链接”同时拥有a:visited.a:hover两种属性,后面的属性会覆盖前面的属性定义: 正确的顺序:a:link.a:visited.a:hover.a:active . 所以说,a:hover定义一定要放在a:link.a:visited的后面,,,

a:link a:visited a:hover a:active四种伪类选择器的区别

a:link选择网页中所有没有被visited的a标签(就是没有鼠标悬停hover或者点击click) a:visited选择网页中所有已经被click的a链接,用来告诉用户这个链接已经被你访问过了 a:hover,说实话这个我用的最多,其实就是选择有鼠标悬停的a链接 a:active,顾名思义active就是活动的意思,表示的是选择用户点击并且还没有放开时(其实就是按住)的a链接 当然还有其他的譬如a:focus,这个表示选择光标(焦点)落下的a链接.

a标签的link,visited,hover,active分别是什么

a:link {color: #FF0000} /*未访问状态*/ a:visited {color: #00FF00}/*已访问状态*/ a:hover {color: #FF00FF}/*鼠标移入到元素上面时的状态*/ a:active {color: #0000FF}/*鼠标按下状态状态*/

【经验】在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

CSS样式中visited,hover,active , focus这四个分别表示什么意思?

CSS伪类用于向某些选择器添加特殊的效果.CSS又名层叠样式表,所谓层叠,就是后面的样式会覆盖前面的样式,所以在样式表中,各样式排列的顺序很有讲究. :link 与 :visited 在样式文件中的顺序可以随便放置. :focus,: hover,:active这几个,如果你设置的顺序不同,会直接影响样式的显示效果. :focus -> :hover -> :active 有些人可能会困惑,为什么必须要按这样的顺序,而不能打乱呢? 其实他们每一个选择器都代表一个含义. :link代表为访问链接

CSS中2d转换:transition过渡放在:hover伪类中与应用在整个元素中区别

css的2d转换十分强大,能够在不使用js的情况下,实现页面的元素与用户之间更多动态的交互,增强用户体验.其中使用最多的就是hover伪类. 1.创建一个页面的div元素: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>2d转换测试</title> </head> <body> <div id="fr&

CSS中@import与link的具体区别

我们知道在网页中引用外部CSS有两种方式:@import和link 我们也经常听到有人说要使用link来引入CSS更好,但是你知道为什么吗? 继续往下看 link:link就是把外部CSS与网页连接起来. @importimport文字上与link的区别就是它可以把在一个CSS文件中引入其它几个CSS文件. 为什么使用@import大部分使用@import方式的人是因为旧的浏览器是不支持@import方式的,这意味着我们可以使用@import来引入只让现代浏览器解析的CSS样式.另一个主要的原因