起因:

a与a:link的CSS代码处,忽觉茫茫然不知所以然:这a的CSS和a:link什么关系?貌似有些冲突啊?还有这a:link、 a:visited、a:hover、a:active伪类之间有没有相互制约和继承关系?

过程:

使用软件:Adobe Dreamweaver CS3 ,Internet Explorer8.0

须知:

在所有浏览器中,链接的默认外观是:

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

在 CSS 定义中:
1. a:hover 必须位于 a:link 和 a:visited 之后,这样才能生效!
2. a:active 必须位于 a:hover 之后,这 样才能生效!
于是得四者顺序:
a:link----->a:visited------>a:hover-------->a:active。 
可以这样记:LoVe HAte(爱恨) [注意大写字母]

结果:

在CSS中,

一、若存在a{……}的定义

①如果a:link{}也存在,那么不管a{}放到哪里,a{}和a:link{}冲突的属性都会采用a:link{}的,不冲突的属性若存在a{}中,会被a:link{}、 a:visited{} 、a:hover{} 、a:active{}都继承;如果存在a:link{}中,只会被a:link{} 、a:hover{} 和a:active{}继承,a:visited{}不继承。
②如果没写a:link,只有其余三个,那么a:link会继 承a{}的所有属性,其余三个会保持自己的已有属性并从a{}中继承没有的属性。

③如果没写a:hover,只有其余三个,那么a:hover{}会继承a:link{}中的所有属性,并从a{}中继承自己没有的属性;a:link{}会保持自己已有属性并从a{} 中继承没有的属性;a:active{}会保持自己已有属性先从a:link{}中继承没有的属性,再从a{}中继承至此前还没有的属 性;a:visited{}会保持自己已有属性并直接从a{}中继承没有的属性。

④如果没写a:active{},只有其余三个,那么a:active{}会继承a:hover{}的所有属性,之后上溯到a:link{}中继承至此之前 自己还没有的属性,再从a{}中继承自己至此仍没有的属性;a:hover{}会保持自己已有属性先从a:link{}中继承自己没有 的属性,再从a{}中继承至此仍没有的属性;a:visited{}会直接从a{}中继承自己没有的属性。

⑤如果没写a:visited{},只有其余三个,那么a:visited{}会继承a{}的所有属性。其余三个都是保持自己已有属性先从上一级(分级看上面的须知②,其中 a:link的上级是a)中继承没有的属性,再从a{}中继承至此自己没有的属性。

二、若没有a{……}的定义

①如果没写a:link{},a:link{}将采用默认的字体大小(无)和颜色(蓝色)
②如果没写a:hover{},a:hover{}将继承a:link{}的所有属性。如果有a:hover{},它将从a:link{}中继承自己没有的属性。
③如果没写a:active{},a:active{}将先继承a:hover{}中 的所有属性,然后从a:link{}中继承至此仍没有的属性。
④如果没写a:visited{},a:visited{}将采用默认的字体大小(无)和颜色(紫色)。

综上所述,效果图如下:

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

复制代码

代码如下:


Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->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的后面,,,

a与a:link、a:visited、a:hover、a:active相关推荐

  1. [css] 请写出:link、:visited、:hover、:active的执行顺序

    [css] 请写出:link.:visited.:hover.:active的执行顺序 :link未访问链接:visited已访问的链接:hover鼠标悬停:active鼠标按下顺带一提,可交互式的组 ...

  2. 链接样式顺序:link、visited、hover、active

    1.介绍 a:link - 正常,未访问过的链接 a:visited - 用户已访问过的链接 a:hover - 当用户鼠标放在链接上时 a:active - 链接被点击的那一刻 当设置为若干链路状态 ...

  3. a链接的四种状态:link、visited、hover、active

    a链接的四种状态 伪类是CSS 用于向某些选择器添加特殊的效果. a标签中有四个:link.visited.hover.active (1)link-设置a对象在未被访问前的样式表属性. (2)vis ...

  4. HTML中a:link,a:visited,a:hover,a:active

    原文地址:http://www.cnblogs.com/yangfeng/archive/2009/07/25/1530962.html 1:解释 link:连接平常的状态 visited:连接被访问 ...

  5. CSS中a标签样式原则 a:link a:visited a:hover a:active执行顺序

    CSS为一些特殊效果准备了特定的工具,我们称之为"伪类".其中有几项是我们经常用到的,下面我们就详细介绍一下经常用于定义链接样式的四个伪类,它们分别是: 代码如下: :link : ...

  6. a:link,a:visited,a:hover,a:active 分别是什么意思?

    link:链接平常的状态 active:链接被按下的时候 visited:链接被访问过之后 hover:鼠标放到链接上的时候 具体一点就是: :hover版本:CSS1/CSS2 兼容性:IE4+ N ...

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

    a:link选择网页中所有没有被visited的a标签,就是没有鼠标悬停hover或者点击click(a链接没有被访问时的样式) a:visited选择网页中所有已经被click的a链接,用来告诉用户 ...

  8. CSS visited,hover,active , focus这四个区别

    CSS伪类用于向某些选择器添加特殊的效果,在样式表中,各样式排列的顺序很有讲究. :link 与 :visited 在样式文件中的顺序可以随便放置. :focus,: hover,:active这几个 ...

  9. css种:link和:visited失效问题

    1.首先是确定伪类链接的顺序没有错误:正确顺序为a:link>a:visited>a:hover>a:active: 2.a:visited因为安全问题和网页缓存的问题,导致网页载入 ...

  10. a访问过后hover样式就不出现了 被点击访问过的超链接样式不再具有hover和active 解决方法...

    改变CSS属性的排列顺序:     L-V-H-A(LV哈): a:link{ } a:visited{ } a:hover{ } a:active{ } 转载于:https://www.cnblog ...

最新文章

  1. 学懂分析,玩转大数据
  2. WWDC2019:iPad全新发布
  3. Maven打包排除某个资源或者目录
  4. MarshalByRefObject 的DOME代码
  5. foxmail邮件怎样打印日历
  6. 国外一教授坦言,用这方法能迅速成为python程序员,但都不愿意说
  7. NSDate分类,把系统返回的时间与现在进行比较---秀清
  8. PHP随机生成中国人姓名的类
  9. python 闭包的作用_python中对闭包的理解
  10. 光继电器一体化控制实训系统
  11. python关键词排名批量查排名_Python 批量获取Baidu关键词的排名并入库
  12. 手机电池校正代码_手机电池校正!iPhone手机电池校正设置
  13. SONiC(4)-Telemetry可视化
  14. VMware 扩展硬盘大小提示 指定的虚拟磁盘需要进行修复
  15. Do带你解析:原生APP与web APP的区别
  16. 7-23 清点代码库(简洁AC+多方法)
  17. 统计学中基础概念说明
  18. 高通新款高端芯片抢闸发布,小米将首发,趁机从华为手里抢夺市场
  19. js json字符串 转为json数组
  20. 《21天学通C语言(第6版•修订版)》一导读

热门文章

  1. R-CNN , Fast R-CNN , Faster R-CNN原理及区别
  2. 小程序WXML基本使用
  3. python super()(转载)
  4. css3实现科技感的呼吸灯效果
  5. 简单的动画函数封装(1)
  6. d3.js 制作简单的俄罗斯方块
  7. Oracle数据库管理与开发pdf
  8. 非常有趣的Console
  9. 4.2 access函数实例
  10. 获取套接字相关联信息