我建议aria-label
在您希望屏幕阅读器说出与标签的 html 标记中包含的内容不同的内容时使用。
我会将您的代码更新为:
<div class="breakdown">
<span aria-label="35 New.">
<strong>35</strong> New
</span>
<br>
<span aria-label="4 Overdue.">
<strong>4</strong> Overdue
</span>
</div>
有了这个,屏幕阅读器将在每个周期完全停顿地说以下内容:
35 新。4 逾期。
我们专门针对 ChromeVox,但这应该适用于所有屏幕阅读器。
关于的想法aria-label
- 因为有两个字符串需要维护,所以如果开发人员错过了更新,它们可能会出现分歧。
- 本地化字符串时,使用的字符串将来自一个来源并被使用两次,从而减少了重复。
aria-label
这就是我在其他项目中经常使用它的目的和方式。
- 这些
aria-label
字符串对于人类来说阅读/grok/编辑的速度更快。
aria-label
使用比隐藏元素更少的标记。
- 可以更新测试以在
aria-label
. 快照也将捕获更改,但开发人员必须意识到这一点。
关于隐藏元素的思考
- 更少的字符串重复,预本地化。
- 使用 ChromeVox 快捷方式时,可以到达一个地方,当用户浏览时,配音将每个隐藏的逗号/句点视为一个单独的项目,而实际上它应该只是一个没有额外标记的句子。
- 带有大量 html 标记的字符串难以本地化,翻译人员也难以维护。
- 与
aria-label
. 如果用户在屏幕上选择文本,并且选择跨越隐藏元素中的内容,则隐藏内容将在用户执行命令时复制copy,并在用户执行命令时粘贴paste。
考虑到所有优点/缺点,从长远来看,我敢打赌,您会发现选择aria-label
将提供最好的开发人员、翻译人员和用户可访问性体验。
如果元素由兄弟元素的文本内容描述,请考虑使用aria-labeledby
to 链接元素。
这个答案是在被问到 6 年后才出现的……但希望它会有所帮助。