a与a:link、a:visited、a:hover、a:active
原文地址http://www.cnblogs.com/exmyth/p/3226654.html
a与a:link、a:visited、a:hover、a:active
起因:
a与a:link的CSS代码处,忽觉茫茫然不知所以然:这a的CSS和a:link什么关系?貌似有些冲突啊?还有这a:link、 a:visited、a:hover、a:active伪类之间有没有相互制约和继承关系?
过程:
使用软件:Adobe Dreamweaver CS3 ,Internet Explorer8.0
须知:
①
在所有浏览器中,链接的默认外观是:
- 未被访问的链接带有下划线而且是蓝色的
- 已被访问的链接带有下划线而且是紫色的
- 活动链接带有下划线而且是红色的
②
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一直没有遇到过这个问题,在最近给一个本科同学做的项目里面。出现一些问题,搜索引擎查了一些网站和资料,发现很多人问到这个问题,给出的结果我试了试,大部分都不正确。
给出我试的顺序,可能会对大家有一些帮助:
代码如下:
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的更多相关文章
- 如何消除移动端a标签点击时的蓝色底色以及a标签link、visited、hover、active的顺序
1.消除a标签移动端点击时的蓝色底色 -webkit-tap-highlight-color:transparent 2.link.visited.hover.active的顺序 a:link{tex ...
- a:link,a:visited,a:hover,a:active
1:解释 link:连接平常的状态 visited:连接被访问过之后 hover:鼠标放到连接上的时候 active:连接被按下的时候 详细的: :hover版本:CSS1/CSS2 兼容性 ...
- a标签的link、visited、hover、active的顺序
a标签的link.visited.hover.active是有一定顺序的,以下是我一直在用的一个顺序,能正确显示四个颜色,我也不知道有没有其他的顺序能正确显示,如果你没办法判断哪个是对的,那就先用这个 ...
- css中链接的4个状态 link、visited 、hover、active 顺序与设置
link 未点时链接色visited 已点过的链接色hover 光标放入链接上的色active 点击时的样式 顺序一定要按link.visited.hover.active来设置 ...
- css 伪类: 1)a:link , a:visited, a:hover, a:active 2):first-child
1. 链接伪类: <!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset=&qu ...
- CSS链接的样式a:link,a:visited,a:hover,a:active
a :link(未被访问)a:hover(鼠标悬停)a:visited(访问过:真正到达那个页面)a:active(鼠标点击与释放之间.对无href属性的a对象无作用) 这几个元素,定义CSS时候的顺 ...
- a:link a:visited a:hover a:active四种伪类选择器的区别
a:link选择网页中所有没有被visited的a标签,就是没有鼠标悬停hover或者点击click(a链接没有被访问时的样式) a:visited选择网页中所有已经被click的a链接,用来告诉用户 ...
- CSS样式中visited,hover,active , focus这四个分别表示什么意思?
CSS伪类用于向某些选择器添加特殊的效果.CSS又名层叠样式表,所谓层叠,就是后面的样式会覆盖前面的样式,所以在样式表中,各样式排列的顺序很有讲究. :link 与 :visited 在样式文件中的顺 ...
- :link,:visited,:focus,:hover,:active详解
原文::link,:visited,:focus,:hover,:active详解 CSS 又名 层叠样式表,所谓层叠,就是后面的样式会覆盖前面的样式,所以在样式表中,各样式排列的顺序很有讲究. ...
- a标签伪类link,hover,active,visited,focus区别
<div id="content"> <h3><a class="a1" href="#">a标签伪类l ...
随机推荐
- Divide and conquer:Moo University - Financial Aid(POJ 2010)
Moo University - Financial Aid 其实是老题了http://www.cnblogs.com/Philip-Tell-Truth/p/4926008.html 这一次我们换二 ...
- 【vs2010调试】当前不会命中断点 源代码与原始版本不同
解决方案:全选CPP文件内容,选择 “编辑”-“高级”-“设置选定内容的格式”,保存,重新编译.
- 查看Linux内核
方法一: 命令: uname -a 作用: 查看系统内核版本号及系统名称 方法二: 命令: cat /proc/version 作用: 查看目录"/proc"下version的信息 ...
- jsonp注意事项
自己测试的: <?php '); } }); } </script> <!DOCTYPE htm ...
- 公共数据访问对象接口CommDao
package org.guangsoft.dao; import java.util.List; import java.util.Set; /** * 公共DAO功能 * @param <K ...
- 118. Pascal's Triangle
题目: Given numRows, generate the first numRows of Pascal's triangle. For example, given numRows = 5, ...
- osgearth 配置mapNode TerrainOptions
设置瓦片PagedLOD节点最小可视距离因子,默认是6.0 minTileRangeFactor() Map *map = new Map();WWOptions wwImgGlobe;map-> ...
- 网站上点击自定义按钮发起QQ聊天的解决方案
一.背景 最近由于开发需要,需要在网站上自定义一个立即交谈的按钮,现将解决方式分享给大家. 二.解决方案 1.首先访问:http://shang.qq.com/widget/consult.php,适 ...
- mysql 查看存储引擎的状态 show engine innodb status 详解
首先,让我们来了解一下 SHOW INNODB STATUS 输出的基础,它打印了很多关于 InnoDB 内部性能相关的计数器.统计.事务处理信息等.在 MySQL 5 中,InnoDB 的性能统计结 ...
- 解决window删除文件时提示: 源文件名长度大于系统支持的长度
import java.io.File; /** */ public class DeleteFiles { public static void deleteFiles( File file ){ ...