博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
a:link,a:visited,a:hover,a:active
阅读量:4552 次
发布时间:2019-06-08

本文共 2462 字,大约阅读时间需要 8 分钟。

1:解释

link:连接平常的状态

visited:连接被访问过之后

hover:鼠标放到连接上的时候

active:连接被按下的时候 

   
  
详细的: 
:hover版本:CSS1/CSS2  兼容性:IE4+ NS4+ 
语法: 
Selector : hover { sRules } 
说明: 
设置对象在其鼠标悬停时的样式表属性。 
在CSS1中此伪类仅可用于a对象。且对于无href属性(特性)的a对象,此伪类不发生作用。在CSS2中此伪类可以应用于任何对象。 
目前IE5.5+仅支持CSS1中的:hover。 
:active版本:CSS1/CSS2  兼容性:IE4+ 
语法: 
Selector : active { sRules } 
说明: 
设置对象在被用户激活(在鼠标点击与释放之间发生的事件)时的样式表属性。 
在CSS1中此伪类仅可用于a对象。且对于无href属性(特性)的a对象,此伪类不发生作用。在CSS2中此伪类可以应用于任何对象。并且:active状态可以和:link以及:visited状态同时发生。 
目前IE5.5+仅支持CSS1中的:active。 
:link版本:CSS1  兼容性:IE4+ NS4+ 
语法: 
Selector : link { sRules } 
说明: 
设置a对象在未被访问前的样式表属性。 
IE3将:link伪类的样式表属性作用于visited伪类。 
默认值由浏览器决定。 
对于无href属性(特性)的a对象,此伪类不发生作用。 
:visited版本:CSS1  兼容性:IE4+ NS4+ 
语法: 
Selector : visited { sRules } 
说明: 
设置a对象在其链接地址已被访问过时的样式表属性。 
IE3将:link伪类的样式表属性作用于visited伪类。 
默认值由浏览器决定。定义网页过期时间或用户清空历史记录将影响此伪类的作用。 
对于无href属性(特性)的a对象,此伪类不发生作用。
2:hover和a:visited书写顺序的重要性
今天在用a:hover属性的时候发现一个奇怪的问题,同一个页面里面有些链接的a:hover效果不能正常表现出来。链接的代码是一样,没有使用其它样式固定,搞的我莫名其妙。还以为是某个标签没有关闭,但是页面比较长,检查起来又嫌累,但是想来想去找不到其它原因,索性把浏览器一关,做别的事情去了。
重新打开这个页面的时候,突然发现那个链接的a:hover效果又出来了。我想了一下,点了那个链接,然后回过头再点,果然又没了。连忙检查css文档,发现a:hover属性写在了visited之前,改写到之后,重试,ok!
以前看书的时候注意到css中关于链接表现的书写有提示说各属性顺序不能颠倒,一直没有注意,写的时候通常都很随意。现在看来不能这个顺序还是很重要的。
css中关于超链接的四个属性一般正常顺序为:link,visited,hover,active,即
a:link 
a:visited 
a:hover
a:active

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/wyBlog117/p/4616115.html

你可能感兴趣的文章
IntentFilter
查看>>
赵雅智_BroadcastReceiver电话监听
查看>>
编译器DIY——词法分析
查看>>
20145203盖泽双《Java程序设计》第三周学习总结
查看>>
pm2 的使用
查看>>
WPF使用Canvas绘制可变矩形
查看>>
ansible-playbook的配置语法 参数
查看>>
基于folly的AtomicIntrusiveLinkedList无锁队列进行简单封装的多生产多消费模型
查看>>
django-给外键关系传值,删除外键关系
查看>>
Daily Scrum M2 11-13
查看>>
函数调用在回调,委托与事件在程序设计中的应用
查看>>
洛谷 2966 2966 [USACO09DEC]牛收费路径Cow Toll Paths
查看>>
tensorflow学习之路-----卷积神经网络个人总结
查看>>
多角色分库情况下shiro开发
查看>>
ios 文件下载 FTP下载
查看>>
一些英文面试题(Android)
查看>>
Unity3D ——强大的跨平台3D游戏开发工具(六)
查看>>
在centos6编译配置httpd2.4的N种方法
查看>>
STM32F4 External interrupts
查看>>
【题解】数颜色 STL vector数组
查看>>