一个人将如何隐藏屏幕读取器中某些生成的内容(用于纯样式)?如果不使用诸如aria-hidden
之类的HTML hacks?
例如。我使用代码content: '·';
分开东西。我已经检查了Facebook&其他大玩家,但他们似乎都使用 aria-hidden
的跨度:
<span aria-hidden="true">·</span>
这是否意味着目前不可能?
对于将来的参考,请注意,根据CSS内容模块3级文档:
生成的内容应可以搜索,可选并用于辅助技术。内容属性适用于语音和生成的内容以进行语音输出。
也说:
如果伪元素纯粹是装饰性的,并且其功能在其他地方涵盖,则将其设置为空字符串可以避免读取装饰元素。
这涉及::before
和::after
伪元素;/
之后可以指示替代文本:
.expandable::before {
content: "25BA" / "";
}
对于CSS2,您可以使用不发音的UTF-8元素,以确保不会宣布这些元素。
例如,当您使用代码时:
.bullet {
content: "2022";
}
2022
(子弹:•)宣布"子弹"使用NVDA,而其他代码(例如2023
)(三角子弹:‣)却没有宣布
答案简短而简单:这是不可能的。
顺便说一句,CSS生成的内容可能会根据浏览器和屏幕读取器所使用的不同,因此您不确定是否会说话(不要使用它来提供重要的信息)。
此外,关于上述已经发布的答案:您不应该依靠以下事实:至少有三个原因,给定角色未被认可,因此也许被忽略了:
- 配音有时会说"不发音";
- 也许明天您未知的角色将被认可
- 用户可以在其发音字典中注册特殊字符
这是个人的观点,但我认为CSS生成的内容是一个概念缺陷:永远不要使用它,并且绝不应该发明它,根据基本分离原则:content = html,表现=CSS,Interactivity = JavaScript。
可悲的是现在为时已晚。
看来,屏幕读取器读出伪内容。
媒体查询"语音"(已弃用)和"听觉"也不支持,这将是一种"隐藏"的方法。伪内容。
这是大量屏幕读取器所支持的内容的很好概述("预计失败"):https://www.powermapper.com/tests/tests/screen-readers/content/content/content/content/content/pp