abbr标签仅提供语义支持,需配合非空title属性才有效;title为空或冗余将导致可访问性失效,首次出现缩写应先写全称再括号缩写,并用data-title+CSS实现可控tooltip。
abbr 标签本身不提供“悬停解释”的功能,它只提供语义层支持;真正触发浏览器 tooltip 的,是 title 属性——但这个行为不可控、不可样式化、移动端基本失效。
没写 title 的 abbr 和 span 没区别:屏幕阅读器跳过、Lighthouse 报“missing description”、搜索引擎忽略语义。常见错误包括:
title="" 或 title=" " —— 被视为缺失title="JavaScript Object Notation (JSON)" —— 括号和冗余描述违反规范,应简化为 title="JavaScript Object Notation"
<abbr title="">JSON (JavaScript Object Notation)</abbr> —— 破坏可访问性,且 title 为空仅靠 <abbr title="Application Programming Interface">API</abbr> 不足以确保理解,尤其对非母语或认知障碍用户。WCAG 推荐做法是:
Application Programming Interface (API)
<abbr title="Application Programming Interface">API</abbr> 即可title,避免上下文丢失Chrome/Firefox 对 title 的渲染已趋于保守(Chrome 默认禁用 hover 提示),Safari 移动端仅长按短暂弹出,Android Chrome 基本不响应。真实项目中要稳定实现视觉提示,得另起炉灶:
data-title 存全称,配合 CSS ::after + content: attr(data-title) 实现可控 tooltipabbr[title],保障语义和读屏器支持tabindex="0" 和 aria-describedby 关联隐藏解释段落abbr 同时设 title 和 aria-label —— 后者会覆盖前者,导致读屏器完全跳过缩写本体最常被忽略的一点:缩写是否真有必要用 abbr?不是所有“看起来像缩写”的词都该标记——比如 “vs”、“eg”、“etc” 属于拉丁缩写,通用程度高,无需强制展开;而 “JWT”、“SSR”、“CSR” 这类技术术语首次出现时,才值得用 abbr + 准确 title + 正文全称三重保障。