【发布时间】:2021-05-03 14:38:12
【问题描述】:
由于内容和表示的神圣分离,我认为 CSS 被屏幕阅读器忽略了。这种幼稚的假设是错误的。
-
似乎有许多从 CSS 中隐藏内容的方法,例如
display:none;或visibility:hidden;甚至width:0; height:0;,会从可访问性树中删除隐藏的元素。它们的内容不可聚焦,例如通过 tab 键,屏幕阅读器不可见。[ 除此之外: 可访问性通常需要隐藏元素,同时让屏幕阅读器可以访问它们:例如用于跳过链接、替代文本或仅在使用屏幕时才有意义的显示/隐藏机制。要真正做到这一点,您需要CSS trickery,例如将元素移出屏幕很大的距离。显然,这些是公认的方法,由WebAIM 和MDN 使用和提倡。例如,还可以查看 Google 搜索结果页面上跳过链接的 CSS。 ]
-
我还发现通过
content属性添加的文本,通常用于附加装饰字符::before或::after元素,确实出现在可访问性树中(对我来说,Firefox 将其显示为“静态文本” )。[ 旁白: 这通常是不受欢迎的,因为添加的文本由无意义的字符组成,这些字符恰好呈现为视觉上漂亮的符号,并具有适当的字体。 ]
我的问题在标题中:哪些 CSS 属性(或值)会影响可访问性树?
当然,CSS 管理演示文稿,对大多数视觉障碍(阅读障碍、近视、各种色盲……或任何人)都很重要。但我没想到 CSS 对盲人用户也很重要。我认为只有 HTML 给出的语义内容对他们来说很重要,而可访问性树完全是由 HTML 构建的。
【问题讨论】:
-
AOM(可访问性对象模型)是 DOM 的一个子集,因此任何从 DOM 中删除元素的类很可能也将其从 AOM 中删除。这里有一篇好文章:developer.mozilla.org/en-US/docs/Learn/Accessibility/…。基本上不显示:没有需要阅读的元素,并且不要将 html 样式设置为其他目的(例如使用 div 作为按钮)。语义 HTML 是一个很好的起点(检查一下!),没有 aria 标签比糟糕的标签更好。
标签: css accessibility hide screen-readers web-accessibility