我一直在使用Mac OSX的内置屏幕阅读器来测试我的网站,我知道它不是最好的,但它是我现在所拥有的。但我发现它并没有停留在元素的末尾......这是有道理的;但是我发现自己放置隐藏的时间来使事情变得可读:
<div class="breakdown">
<strong>35</strong> New<span class="visuallyhidden">.</span><br>
<strong>4</strong> Overdue<span class="visuallyhidden">.</span>
</div>
我觉得这样做真的很脏,但是如果我不这样做,它要么破坏了设计,要么用连续的句子来阅读,这是不可理解的。
有没有人有过提供此类事情的经验?
答案 0 :(得分:8)
如果您在语义上格式化代码,它应该可以正常工作。根据HTML结构的外观,您使用<br>
标记作为演示目的。这不是换行符的意思,因此不是标记的语义用法。
您特别希望每一行都是分开的,因此您应该将它们放在包装块级别标记中。您可以将每行包装在p
或div
标记中,然后屏幕阅读器会将它们正确分开。
答案 1 :(得分:3)
我建议您在需要屏幕阅读器说出与html标记不同的内容时使用aria-label
。
我会将您的代码更新为:
<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
字符串对于人类而言读/读/编辑速度更快。aria-label
的标记更少。aria-label
中查找特定的字符串。快照也将捕获更改,但是开发人员必须意识到这一点。aria-label
相比,额外的标记感觉很笨拙。如果用户选择屏幕上的文本,并且选择内容跨越隐藏元素中的内容,则当用户执行 copy 命令时将复制隐藏的内容,而当用户执行粘贴命令。考虑到所有优点/缺点,长期来看,您会发现选择aria-label
将提供最佳的开发人员,翻译人员和用户可访问性体验。
这个答案将在被问到6年后出现……但希望会有所帮助。
答案 2 :(得分:1)
自问这个问题以来已经有一段时间了,但值得注意的是,问题中提出的技术没有任何问题。我可以确认当前版本的Jaws,Jaws 18.0将暂停逗号或句号,不像冒号或子弹这样的标记。 Current versions of iOS VoiceOver pause nicely for commas也是如此。您的标点符号(如果它不是您的设计的一部分)可以通过上面提出的screen-reader only CSS隐藏,或者,在适当的情况下,aria-label属性可以包含暂停的标点符号。