超连接的四种状态的应用详细讲解

所属分类: 网页制作 / HTML/Xhtml 阅读数: 722
收藏 0 赞 0 分享

虽然你认为可能原因是浏览器问题,但是更多的可能是你样式定义时顺序错误。为了保证能看到不同状态下的连接样式,正确的样式顺序应该是:

" link - visited - hover - active "或" LVHA "(缩写)。

核心内容:

每个选择符selector都有一个“specificity”如果两个selectors应用于同一个元素,具有较高specificity的选择符将胜出,具有优先权。例如:

P.hithere {color: green;} /* specificity = 1,1 */P {color: red;} /* specificity = 1 */

任何设置了类class=hithere的段落内容显示为绿色而不是红色。两个selectors都设置了颜色,但是具有更高specificity的选择符将胜出。

伪类如何影响specificity呢?它们具有完全相同的加权值,下列样式具有相同的specificity加权值:

A:link {color: blue;} /* specificity = 1,1 */A:active {color: red;} /* specificity = 1,1 */A:hover {color: magenta;} /* specificity = 1,1 */A:visited {color: purple;} /* specificity = 1,1 */

这些都是用于超链接的样式设置。大部分情况下需要同时设置其中的几个样式,例如,一个未被访问的超链接在鼠标悬停和点击时可设置“鼠标悬停”和“鼠标激活“两种状态下的不同样式,由于上述三个规则都可应用于超链接,并且全部选择符具备相同的specificity,那么根据规则,最后一个样式“胜出”。所以" active "式样永远也不会显示出来,因为它总是被" hover "式样覆盖(即" hover "优先)。现在再来分析一下已经被访问过的超链接鼠标悬停是什么效果,结果永远是purple紫色的:( ,因为它的" visited "式样总是优先于其它的状态样式规则(包括" active "和" hover")而显示。

这就是为什么CSS1推荐样式顺序的原因:

A:linkA:visitedA:hoverA:active

实际上,开头两个样式的顺序可以调换,因为一个超链接不可能同时存在“未访问”和“已访问”两种状态。( :link意思是" unvisited ";我不知道为什么不这样定义呢.)

CSS2现在允许伪类可以以“联合成组”形式出现,例如:

A:visited:hover {color: maroon;} /* specificity = 2,1 */A:link:hover {color: magenta;} /* specificity = 2,1 */A:hover:active {color: cyan;} /* specificity = 2,1 */

They have the same specificity, but they apply to fundamentally different beasts, and so don't conflict. You can get hover-active combinations, for example.

如何理解本文当中所涉及到的“specificity”呢?specificity可以理解未简单地连在一起的号码字符串,上面的一个例子:P.hithere {color: green;} /* specificity = 11 */P {color: red;} /* specificity = 1 */

这好像是一个基于十进制的简单运算。然而计算“specificity”不能使用十进制算法,例如你把15种选择符连在一起使用、它们具有的“specificity”加权值还是比简单的class选择符低。举例:

.hello {color: red;} /* specificity = 10 */HTML BODY DIV UL LI OL LI UL LI OL LI UL LI OL LI (color: green;} /* specificity = 15 */

" 10 "实际上是一个“1”后面接着“零”、不是"十",我们可以使用十六进制描述前面的样式规则的specificitiy,像下面:

.hello {color: red;} /* specificity = 10 */HTML BODY DIV UL LI OL LI UL LI OL LI UL LI OL LI (color: green;} /* specificity = F */

唯一的问题是如果你想为第二个样式规则增加两个或更多的选择符时,那时你就可能得到一个“17”的specificity、会再一次混淆。事实上specificity可能是无穷大的,所以为了避免更多的混乱,建议使用逗号来分隔specificity的值。

站长建议:反复练习specificity的加权值的计算,网站CSS的设置体现了你控制页面的能力,在动态网站开发中,CSS的地位也是非常重要的,多看资料,多练习,多来脚本之家!如果你喜欢本站就代为宣传吧!谢谢阅读。

更多精彩内容其他人还在看

html超级链接a的click事件之后跳转href所指向的地址

需要使用a这个超级链接,而又不使用href来完成跳转,在执行完了onClick事件后,a又去跳转href所指向的地址了,下面由两种不错的解决方法,希望对大家有所帮助
收藏 0 赞 0 分享

html中position的一个小用法使用介绍

想必大家对html中position属性并不陌生吧,使用它可以完成普通标签完成不了的任务,下面有个不错的示例,大家可以参考下
收藏 0 赞 0 分享

用按钮触发事件的方式实现背景色的闪烁效果

实现背景色闪烁效果的方法有很多,本文为大家介绍的是用按钮来实现背景色的闪烁,将下面的这段代码加入到body区域中即可
收藏 0 赞 0 分享

在HTML中如何隐藏某段文字具体该怎么实现

文字隐藏的方法有很多,在本文为大家介绍下在HTML中如何隐藏某段文字,具体该怎么实现,需要的朋友可以了解下
收藏 0 赞 0 分享

通过display或visibility来实现HTML元素的显示与隐藏

需要根据某些条件来控制Web页面中的HTML元素显示还是隐藏,可以通过display或visibility来实现,感兴趣的朋友可以了解下本文
收藏 0 赞 0 分享

html table表数据转Json格式示例代码

本文为大家介绍下html table表数据转Json格式,下面有个不错的示例,大家可以参考下
收藏 0 赞 0 分享

HTML中当定义多个class属性时无效的解决方法

为class属性定义多个值,经常会发现定义的样式无效,经测试,在定义多个class值的时候,一定要注意,把自己最喜欢的样式放在后面,否则无效
收藏 0 赞 0 分享

html form表单提交action和url跳转到actiond的区别介绍

form表单的action 与url跳转是不一样的:form表单可以给后台传递数据,url跳转到action只能通过url的参数来传递数据,不懂的朋友可以参考下
收藏 0 赞 0 分享

a标签是否新开一个页面的问题各大网站的打开情况整理

a标签是否新开一个页面的问题,在本文为大家整理了一些各大网站的新页面打开情况,需要的朋友可以参考下
收藏 0 赞 0 分享

如何弹出QQ临时对话框实现不添加好友在线交谈效果

如何不添加好友弹出QQ临时对话框实现在线交谈效果,这样的一个需求,我们真的是太需要了,实现起来也很简单,一行代码即可搞定,需要的朋友可以参考下
收藏 0 赞 0 分享
查看更多