alink 属性在现代 html 中已失效:它是 html 4.01 的过时属性,html5 已完全移除,所有现代浏览器均不支持;必须用 css :active 伪类替代,并遵循 lvha 顺序与交互兼容性规范。

ALINK 属性在现代 HTML 中已失效
直接说结论:ALINK 是 HTML 4.01 中的过时属性,从 HTML5 开始被完全移除,任何现代浏览器(Chrome、Firefox、Edge、Safari)都不再支持它。如果你在写新项目时还用 ALINK,链接的“激活中”颜色根本不会生效。
替代方案:用 CSS 的 :active 伪类控制激活色
激活状态(即鼠标按下但尚未松开时)必须通过 CSS 实现。关键点在于::active 只对可交互元素(如 <a></a>)有效,且需注意层叠顺序和选择器特异性。
-
:link和:visited必须放在:hover和:active之前,否则可能被覆盖(LVHA 顺序) -
:active默认持续时间极短,仅限鼠标按下瞬间;若需延长,得配合 JavaScript 模拟(比如添加临时 class) - 移动端无真正“按下”概念,
:active在触摸屏上行为不一致,部分浏览器需加cursor: pointer或监听touchstart
body {
color: #333;
}
a:link { color: #0066cc; }
a:visited { color: #666; }
a:hover { color: #004499; }
a:active { color: #ff3300; }
为什么不能用 BODY 的 ALINK 属性“兜底”
即使你在旧文档里写了 ,它也只影响该页面内所有未显式设置 style 或 CSS 的 <a></a> 标签,且仅在 IE6–8 等古董浏览器中可能起效。问题在于:
- 无法作用于
<button></button>、<div role="link"> 等语义化替代元素 <li>不支持透明度(如 <code>rgba(255,0,0,0.8))、渐变或其它现代色彩表达 - 与外部样式表、CSS-in-JS、Shadow DOM 完全冲突,优先级混乱
- 给每个链接加
onmousedown="this.style.color='#ff0000'"和onmouseup="this.style.color=''" - 或者用简单 JS 统一绑定:
document.querySelectorAll('a').forEach(a => { a.addEventListener('mousedown', () => a.style.color = '#ff0000'); a.addEventListener('mouseup', () => a.style.color = ''); }); - 注意:这类内联样式会覆盖 CSS 的
:active,所以必须禁用或同步处理
真要兼容老系统?别碰 ALINK,改用内联 style + JS 模拟
如果维护一个必须跑在 IE7/8 的遗留系统,且无法升级 HTML 结构,就别依赖 ALINK —— 它不可靠。更可控的做法是:
真正难的不是写对颜色,而是判断当前环境是否需要降级、哪些交互路径会被忽略、以及移动端 fallback 是否到位——这些细节往往在测试阶段才暴露。











