纯装饰应对辅助技术隐藏
别名: 空 alt · aria-hidden · 装饰图
概念解释
分割线、花纹、背景色块、不承载事实的插画,对辅助技术应是沉默的。img 用空的 alt="",内联 SVG 用 aria-hidden="true",或把图放进 CSS 背景,让它不出现在无障碍树上。缺 alt 不等于空 alt:许多阅读器会改读文件名。这里假定已经判定它是装饰;判定方法、以及旁边已有文字时别再写一遍,是后面两条。
机制
阅读器把遇到的图像节点送进语音流。装饰图没有可交付的信息,却占用虚拟缓冲、打断标题之间的节奏。第二层:隐藏必须是显式的。没写 alt 时,用户代理常把文件名或 src 末段当成名称,「gold-swirl.png」会被念出来。CSS 背景里的图默认不进树,这是隐藏的一种实现,但若背景图里其实有必须读的字,图会对 AT 消失而视力用户仍在读——那是漏标成装饰,不是隐藏技巧成功。
可聚焦的装饰控件(空链包着花纹)即使 alt 为空,焦点仍会停,阅读器可能报「链接」。隐藏装饰图的同时,不要留下可聚焦的空壳。
怎么研究
用浏览模式把营销页从头走到主内容,数「无意义图形 / 文件名」播报次数。对照:缺 alt、空 alt、aria-hidden、CSS 背景。
自变量:隐藏方式、图是否可聚焦。 因变量:无意义播报次数、遍历多花的时间、空链接焦点次数。
NVDA+Firefox、VoiceOver+Safari 对缺 alt 的回退不完全相同,要至少两套。自动化可标「缺 alt」,但「空 alt 是否正确」要靠人判断是不是真装饰。
边界
图标按钮不是装饰,要有功能名。图表不是装饰。焦点指示、必填星号若做成图,更不能藏。用户代理样式表里的列表符号一般已处理,不必再给每个圆点写 alt。打印样式若把背景图打出来当信息用,屏幕上的「CSS 隐藏」在纸上会翻成缺失。
怎么落地
- 确认是装饰之后:
img写alt="",装饰 SVG 加aria-hidden="true",或改到 CSS 背景。 - 不要省略
alt属性去「让浏览器决定」。 - 花纹不要包在可聚焦的空链接或空按钮里。
- 验证:阅读器从标题跳到标题,中间不应出现文件名或「图形」。Tab 一遍,不应停在没有名字的装饰焦点上。