HTML5 已废弃 body 的 link 属性,应改用 a:link 伪类;它精准控制未访问链接、支持深色模式、可局部定制且兼容性好,而 link 属性仅作用于无样式的裸链接且无法响应 CSS 更新。

body 的 link 属性确实能设未访问链接颜色,但别真用它——HTML5 已彻底废弃,现代浏览器虽还兼容,但属于“能跑但不该写”的代码。
为什么 link 属性现在不推荐用
这个属性来自 HTML 4.01,XHTML 1.0 Strict 就已不支持,HTML5 标准里直接删了。它的问题不止是过时:
-
link只作用于<a></a>标签且没写style或 CSS 类的“裸链接”,一旦加了任何样式就失效 - 无法区分内联链接、按钮式链接、伪元素生成的链接等现代写法
- 不能配合
prefers-color-scheme做深色模式适配 - 全局控制太粗暴,改一个颜色可能意外影响第三方组件里的链接
a:link 是唯一靠谱的替代方案
所有主流浏览器都支持 a:link 伪类,它精准对应“未访问的超链接”,且优先级高于 body 的 link 属性:
- 必须写在
<style></style>或外部 CSS 文件里,不能写在标签上 - 要确保顺序:
a:link和a:visited必须放在a:hover和a:active之前,否则悬停/点击态会覆盖未访问态 - 如果只想改某类链接(比如导航栏),直接加类名:
.nav-link:link { color: #1a73e8; }
<style>
a:link { color: #1a73e8; text-decoration: underline; }
a:visited { color: #5f6368; }
a:hover { color: #0d47a1; }
a:active { color: #000; }
</style>
如果必须读取旧页面的 link 属性值
极少数维护老系统时可能需要脚本获取当前 document.body.link,注意三点:
- 返回值是字符串(如
"blue"或"#0000ff"),不是计算后的 RGB - 若
标签没写link属性,返回空字符串,不是默认蓝色 - 该值不会随 CSS 修改而更新,哪怕你后来用
a:link覆盖了颜色,document.body.link仍返回原始 HTML 里的值
真正要注意的不是怎么设颜色,而是别让 link 属性出现在新项目里——它看起来省事,实际埋下样式不可控、审查工具报错、未来升级难的坑。


















