我有以下标题
<h1>ADD MONEY</h1>
,并且VoiceOver会将其读取为
一笔钱
而如果我将文本更改为小写,它将正确地读为“增钱”。你有什么建议吗?我已经尝试过使用aria-labelledby
了,但是没有运气!
答案 0 :(得分:1)
我建议开发人员避免在这种情况下尝试控制屏幕阅读器。原因:
一些答案建议使用CSS text-transform: uppercase
。这是一个好方法,但是在不同的屏幕阅读器之间也存在不一致之处。在理想的世界中,原始文本和文本转换都可以传递给辅助技术,以便为语音引擎提供更好的信息,同时也尊重用户的喜好。我们尚不存在,但正在由浏览器实现者进行讨论-有关更多详细信息,请参见Chromium错误跟踪器中的讨论:Honouring text-transform styles in the a11y tree?
另一种建议的技术是使用小写的aria-label
复制可见文本,但是强制浏览器将小写的版本传递给辅助技术。例如<button aria-label="add money">ADD MONEY</button>
。在许多情况下,这可能效果很好,但这是开发人员如何获得用户偏好的示例。例如,希望其屏幕阅读器更改大写的语音提示的用户会在这里错过。屏幕阅读器的主要工作是传达屏幕上的内容(包括大写字母)。我认为小写的aria-label
技术与此不符。
关于全大写的讨论(在Drupal CMS问题中)来自屏幕阅读器用户一些有趣的贡献: Readability problem with all-caps text in core themes。
答案 1 :(得分:0)
将标记保留为小写,但使用CSS只能通过text-transform
在视觉上将文本更改为大写。
然后添加aria-label
中的"add money"
。
h1 {
text-transform: uppercase;
}
<h1 aria-label="add money">add money</h1>