aria-description 不被任何主流浏览器或读屏器支持,它根本不在 W3C ARIA 规范中;正确替代 title 的方案是 aria-describedby,需指向一个真实、可见(或视觉隐藏)、ID 唯一的 DOM 节点。

aria-description 在当前所有主流浏览器和读屏器中**完全不被支持**——它不是 title 的替代方案,也不是 WAI-ARIA 1.2 或 1.3 规范中的合法属性。你写了,浏览器会忽略;NVDA、VoiceOver、JAWS 都不会读它,开发者工具里查不到任何行为反馈。
为什么找不到 aria-description?它根本不存在
W3C 官方 ARIA 规范中从未定义过 aria-description。常见混淆来源是把 aria-describedby 拼错,或误信某些过时博客/错误文档。真实存在的、被全平台支持的描述性属性只有:aria-describedby(引用 ID)、aria-label(覆盖名称)、aria-details(但该属性已被废弃,见下文)。
-
aria-describedby="hint-id":唯一可靠、广泛支持的“补充描述”机制 -
aria-details:W3C 已标记为 deprecated,Chrome、Firefox、Safari 均不实现,读屏器完全无视 -
title:仅悬停/聚焦时触发,移动端基本失效,且不参与可访问树构建
用 aria-describedby 替代 title 的实操要点
要让屏幕阅读器在聚焦元素时朗读提示文字,必须用 aria-describedby 指向一个真实存在的、可访问的 DOM 节点,而不是写个字符串。
- 描述节点必须有真实
id,且不能被display: none或visibility: hidden隐藏(可用position: absolute; left: -9999px视觉隐藏) - ID 必须在页面加载完成时就存在;动态插入的描述节点,需确保插入后立即绑定
aria-describedby属性 - 多个描述用空格分隔:
aria-describedby="hint-required hint-format",朗读顺序按 DOM 中节点出现顺序,不是书写顺序 - 不要复用同一个 ID 给多个不同语义的元素——每个描述应一对一匹配上下文
常见错误:你以为在替代 title,其实什么都没发生
这些写法看似“更现代”,实际全部失效:
立即学习“前端免费学习笔记(深入)”;
-
<button aria-description="删除这条记录"></button>→ 属性名拼错,浏览器静默忽略 -
<input aria-describedby="请填写邮箱">→ 值是字符串而非 ID,读屏器找不到目标 -
<div id="hint" aria-hidden="true">格式示例:name@domain.com</div>→ 父级或自身设了aria-hidden="true",整个节点从可访问树中移除 -
<input aria-describedby="hint" title="邮箱格式"><span id="hint" style="display:none">必须含 @ 符号</span>→display: none导致节点不可访问
真正起作用的最小闭环就三行:<label for="email">邮箱</label> + <input id="email" aria-describedby="email-hint"> + <p id="email-hint" class="sr-only">请输入公司邮箱,例如 name@company.com</p>。漏掉任意一环,提示就断了。



















