在 Chrome 浏览器中,锚点链接没有按预期显示为黑色,通常是因为浏览器默认的 :visited 已访问状态覆盖了 :link 未访问状态的样式。要正确设置链接颜色,关键在于遵循 LVHA 顺序(:link → :visited → :hover → :active),并确认链接尚未访问,或对不同状态统一定义样式。

在 Chrome 浏览器中,锚点链接未显示黑色的根本原因,是浏览器默认的 :visited 状态覆盖了 :link 样式;要解决这个问题,核心方法就是遵循 LVHA 顺序(:link → :visited → :hover → :active),并确保链接未被访问,或统一重置各状态的链接颜色。
在 CSS 中,:link 这个伪类只会匹配用户尚未访问过的超链接,也就是 href 属性有效且当前处于“未访问”状态的链接。一旦用户点击过该链接,浏览器就会将它标记为已访问,此时 :link 对应的样式就不再生效,转而由 :visited 规则接管。这也是为什么你在 Chrome 里经常会遇到这种情况:.main-anchor:link { color: black; } 看起来没有生效,而 .main-anchor:visited { color: black; } 却可以正常显示。
想让 CSS 链接颜色稳定、可控,并避免锚点样式异常,必须遵守 LVHA 顺序(也常被称为 “LoVe HAte” 记忆口诀):
:link(未访问链接):visited(已访问链接):hover(鼠标悬停):active(激活 / 点击中)
这一顺序不仅有助于提高代码可读性,也是 CSS 层叠规则中的重要原则:当多个伪类选择器优先级相同时,后声明的样式会覆盖前面定义的规则。如果遗漏某个状态,或者书写顺序错误(例如把 :hover 放在 :link 前面),就可能导致链接在交互状态下颜色异常、样式回退,影响最终显示效果。
✅ 正确写法示例:
.main-anchor:link {
color: black;
}
.main-anchor:visited {
color: black; /* 统一已访问状态颜色 */
}
.main-anchor:hover {
color: #0066cc;
text-decoration: underline;
}
.main-anchor:active {
color: #cc3300;
}⚠️ 注意事项:
- 浏览器对
:visited的可用样式限制非常严格(主要出于用户隐私保护考虑),通常只允许设置color、background-color、border-color、outline-color以及部分text-*、column-*相关属性,其他 CSS 属性往往会被直接忽略。 - 如果你想彻底测试
:link的实际效果,尤其是在开发或调试 CSS 链接样式时,可以清除浏览器历史记录,或者使用无痕模式进行验证,这样更容易看到未访问链接的真实表现。 - 实际开发中,建议始终同时为
:link和:visited明确声明颜色值,不要完全依赖浏览器默认样式,因为默认情况下浏览器通常会把:link显示为蓝色,把:visited显示为紫色。
总结来说,Chrome 中链接颜色显示不符合预期,往往不是 CSS 失效,而是链接状态判断和层叠顺序被忽略所导致。只要坚持使用 LVHA 顺序,显式定义各个状态的样式,并理解 :link 只作用于未访问链接这一语义边界,就可以在 Chrome 以及其他现代浏览器中实现稳定、清晰且易维护的锚点链接样式控制。
