超链接的伪类
来自CloudWiki
问题
- 超链接的默认样式总是蓝色带下划线的,如何改变超链接的外观呢?
- 例如:对某个超链接,要求设置样式如下
初始状态:蓝色、无下划线;
访问之后:红色、无下划线;
鼠标悬停:显示下划线;
点击时:红色、有下划线;
- 如何实现?
超链接的操作状态包含初始状态、鼠标悬停状态、点击状态和访问过状态共四个,对每种状态都可以设置独立的外观样式,这些样式需要使用伪类选择符来设置。
伪类选择符
- 超链接的操作状态包含初始状态、鼠标悬停状态、点击状态和访问过状态共四个,对每种状态都可以设置独立的外观样式,这些样式需要使用伪类选择符来设置。
a { 样式规则; } — 用父标记指定4种子状态共有的样式,由4个伪类继承
a:link { 样式规则1; } — 设置超链接文本在超链接尚未被访问时的样式(默认字符蓝色带下划线)
a:visited { 样式规则2; } — 设置超链接文本已被访问过之后的样式(默认字符红色带下划线)
a:hover { 样式规则3; } — 设置鼠标指向、经过、悬浮在某个标记上方时该标记的样式
a:active { 样式规则4; } — 设置鼠标单击激活某个标记时该标记的样式
- 提示:在 CSS 定义中,a:hover 必须被置于 a:link 和 a:visited 之后,才是有效的,a:active 必须被置于 a:hover 之后,才是有效的。
超链接上的应用
- 试一试:W3C实例
- 源代码:
<html> <head> <style type="text/css"> a:link {color: #FF0000} a:visited {color: #00FF00} a:hover {color: #FF00FF} a:active {color: #0000FF} </style> </head> <body> <p><b><a href="/index.html" target="_blank">这是一个链接。</a></b></p> <p><b>注释:</b>在 CSS 定义中,a:hover 必须位于 a:link 和 a:visited 之后,这样才能生效!</p> <p><b>注释:</b>在 CSS 定义中,a:active 必须位于 a:hover 之后,这样才能生效!</p> </body> </html>
普通元素的应用
div:hover 设置元素在其鼠标悬停时的样式
IE7+
源代码:
div:hover { color: blue; } ... <div>hover</div>
div:active 设置元素在被用户激活(在鼠标点击与释放之间发生的事件)时的样式
IE8+
div:active { color: blue; } ... <div>active </div>
为伪类指定类别
- 更多的时候使用包含选择符定义伪类
id选择符
- 如果只对某一个特定的<a>标记设置伪类样式,则可对该标记定义id属性,用“id属性”选择符或“a#id属性”选择符定义伪类样式表。
a#id属性:link { 样式规则2; } a#id属性:visited { 样式规则3; } a#id属性:hover { 样式规则4; }
class选择符
- 如果对页面中的某一部分<a>标记设置样式,则可对这些<a>标记定义一个相同的class类名,如果需要对<a>标记分组定义样式则可以按组分别定义class类名,用元素指定选择符分别定义各自的伪类样式表:
a.class类名:link { 样式规则2; } a.class类名:visited { 样式规则3; } a.class类名:hover { 样式规则4; }
- 试一试:W3C实例
- 源代码:
<html> <head> <style type="text/css"> a.one:link {color: #ff0000} a.one:visited {color: #0000ff} a.one:hover {color: #ffcc00} a.two:link {color: #ff0000} a.two:visited {color: #0000ff} a.two:hover {font-size: 150%} a.three:link {color: #ff0000} a.three:visited {color: #0000ff} a.three:hover {background: #66ff66} a.four:link {color: #ff0000} a.four:visited {color: #0000ff} a.four:hover {font-family: monospace} a.five:link {color: #ff0000; text-decoration: none} a.five:visited {color: #0000ff; text-decoration: none} a.five:hover {text-decoration: underline} </style> </head> <body> <p>请把鼠标移动到这些链接上,以查看效果:</p> <p><b><a class="one" href="/index.html" target="_blank">这个链接改变颜色</a></b></p> <p><b><a class="two" href="/index.html" target="_blank">这个链接改变字体大小</a></b></p> <p><b><a class="three" href="/index.html" target="_blank">这个链接改变背景颜色</a></b></p> <p><b><a class="four" href="/index.html" target="_blank">这个链接改变字体系列</a></b></p> <p><b><a class="five" href="/index.html" target="_blank">这个链接改变文本装饰</a></b></p> </body> </html>
包含选择符
- 更多的时候使用包含选择符定义伪类
- 一个页面某个区域中的超链接格式往往都是一样的,例如一级导航块、二级导航块、其他内容导航块等。
- 例如:在div中包含a。
案例:
<html> <head> <style type="text/css"> .menu a:hover {background: green;} </style> </head> <body> <div class="menu"> <a href="#">这个链接改变字体系列</a></div> </body> </html>
案例:为syxw.html页面中的各条新闻设置超链接,href属性值都设置为#,伪类样式分别为:初始状态与访问过后(黑色、无下划线),鼠标悬停(蓝色,下划线)