在CSS中,link和visited是超链接专属的伪类选择器,分别用于设置未访问超链接和已访问超链接的样式,是实现超链接状态区分的核心方案。

link与visited伪类的基础用法
link伪类匹配所有未被用户访问过的超链接元素,visited伪类匹配所有已经被用户访问过的超链接元素,两者都需要作用在a标签上才会生效。
基础样式设置的示例代码如下:
/* 未访问的超链接样式:蓝色、无下划线 */
a:link {
color: #0066cc;
text-decoration: none;
}
/* 已访问的超链接样式:紫色、无下划线 */
a:visited {
color: #663399;
text-decoration: none;
}
伪类的书写顺序要求
超链接相关的伪类有固定的推荐书写顺序,否则可能出现样式覆盖问题,正确的顺序为:link → visited → hover → active,可以简记为LVHA。
如果先写visited再写link,由于link和visited的优先级相同,后写的样式会覆盖先写的,导致未访问超链接也应用visited的样式,不符合预期。正确的顺序示例如下:
a:link {
color: #0066cc;
}
a:visited {
color: #663399;
}
a:hover {
color: #ff6600;
text-decoration: underline;
}
a:active {
color: #cc0000;
}
visited伪类的样式限制
出于用户隐私保护,浏览器对visited伪类可设置的样式有严格限制,仅允许设置以下属性:
- color:文字颜色
- background-color:背景颜色
- border-color:边框颜色
- outline-color:轮廓颜色
- 列在属性中的颜色相关子属性,比如background-clip等不影响布局的颜色属性
如果尝试在visited中设置width、height、font-size、padding等影响布局或元素尺寸的属性,浏览器会直接忽略这些设置,不会生效。
以下是一个错误的visited样式设置示例,其中font-weight不会生效:
/* 错误示例:font-weight不属于允许设置的属性 */
a:visited {
color: #663399;
font-weight: bold; /* 该属性不会生效 */
}
实际应用注意事项
首先,link和visited伪类仅对带有href属性的a标签生效,如果a标签没有href属性,这两个伪类不会匹配该元素。
其次,visited的样式判断基于浏览器的历史访问记录,如果用户清除了浏览器历史记录,已访问的超链接会重新被识别为未访问状态,应用link的样式。
最后,如果需要兼容旧版本浏览器,建议始终按照LVHA的顺序书写超链接伪类样式,避免出现样式异常问题。