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

须知:

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

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

在 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的后面,,,

时间: 2024-11-09 20:42:50

a与a:link、a:visited、a:hover、a:active的相关文章

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中链接的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,visited,hover,active分别是什么

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

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链接.

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

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

link,:visited,:focus,:hover,:active详解 .

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

利用伪元素单个颜色实现 hover 和 active 时的明暗变化效果

1.颜色小tip知识 在背景色上方叠加一个黑色半透明层 rgba(0,0,0,.2) 可以得到一个更暗的颜色 在背景色上方叠加一个白色半透明层 rgba(255,255,255,.2) 可以得到一个更亮的颜色 单个颜色实现 hover 和 active 时的明暗变化效果 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>

详解css3 pointer-events(阻止hover、active、onclick等触发事件来

pointer-events 更像是JavaScript,它能够: 阻止用户的点击动作产生任何效果 阻止缺省鼠标指针的显示 阻止CSS里的 hover 和 active 状态的变化触发事件 阻止JavaScript点击动作触发的事件 实际代码使用中案例: 1.提交页面,提交按钮点击后,添加这个样式属性(style="pointer-events"),来防止重复提交. @camnpr 2.一些层的绝对定位,覆盖按钮,穿透可以点击它.等等. 来看下具体用法: pointer-events:

chrome保持元素hover,active状态

审查元素,选中需要hover的标签 点击"Styles"菜单中的":hov",弹出 Force element state 选中相应的 :hover :active :focus :visited 等伪类

选择器(E:hover/E:active/E:focus的使用)

<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>    <title></title>    <style type="text/css"