【问题标题】:accessibility p tag different text for screen reader可访问性 p 为屏幕阅读器标记不同的文本
【发布时间】:2020-11-23 19:26:03
【问题描述】:

对于 p 标签,我需要屏幕阅读器读取的文本与 p 标签中包含的文本不同。我需要人类看到“乔丹”和屏幕阅读器阅读“迈克尔乔丹”。这些在带有 swiper.js 的响应式网格中。添加标题不起作用。我怎样才能让它工作? (我可以使用不同的 HTML 标记和属性来获得相同的效果。)

<p role="title" title="Michael Jordan">Jordan</p>

【问题讨论】:

  • 为什么要让屏幕阅读器阅读与屏幕上显示的内容不同的内容?
  • @SuperJade 这是一个由 div 标签制成的产品网格,因此它可以在小屏幕和 swiper.js 库上响应,因此用户可以滑动它。产品标题位于列的顶部,但当屏幕阅读器读取规格和值的行时,它们与规格脱节,这会造成糟糕的用户体验。我需要做一些事情,比如在带有产品标题的 p 标签中添加一个 aria-label,它对于屏幕阅读器来说是有价值的,而对于人类来说,这个值就在那里,因为网格很明显。

标签: accessibility screen-readers jaws-screen-reader nvda


【解决方案1】:

可访问性的黄金法则是尽可能为非屏幕阅读器用户提供与屏幕阅读器用户相似的体验,因此应谨慎使用以下技术。

话虽如此,有时上下文等可能很重要,您需要向屏幕阅读器提供额外信息。

有很多方法可以做到这一点:

1。 aria-label

如果你给一个元素一个aria-label 它的内容会被覆盖。但是这个doesn't have perfect support,尤其是在没有角色的段落和div等元素上。

&lt;p aria-label="Michael Jordan"&gt;Jordan&lt;/p&gt;

更新aria-label 的用法以清晰明了

正如cmets中指出的那样,我并不清楚上面的内容。

希望这更清楚,我很抱歉:

屏幕阅读器将忽略段落、div 等上的aria-label,除非他们有一个覆盖其语义含义的role

例如:

&lt;p aria-label="Michael Jordan" role="heading"&gt;Jordan&lt;/p&gt; 可以工作,而我上面给出的示例则不能,纯粹是为了说明aria-label 的用法。

2。视觉隐藏文本

向屏幕阅读器用户提供额外信息的一种更可靠的方法是使用visually hidden text

.visually-hidden { 
    border: 0;
    padding: 0;
    margin: 0;
    position: absolute !important;
    height: 1px; 
    width: 1px;
    overflow: hidden;
    clip: rect(1px 1px 1px 1px); /* IE6, IE7 - a 0 height clip, off to the bottom right of the visible 1px box */
    clip: rect(1px, 1px, 1px, 1px); /*maybe deprecated but we need to support legacy browsers */
    clip-path: inset(50%); /*modern browsers, clip-path works inwards from each corner*/
    white-space: nowrap; /* added line to stop words getting smushed together (as they go onto seperate lines and some screen readers do not understand line feeds as a space */
}
&lt;p&gt;&lt;span class="visually-hidden"&gt;Michael &lt;/span&gt;Jordan&lt;/p&gt;

其他重要信息

据我所知,没有 role="title" 这样的东西——我假设你的意思是像 role="heading" 这样的东西——此时只需使用 &lt;h1&gt;&lt;h6&gt;

我从两个示例中删除了title 属性,现在它基本上没用了,因为触摸设备无法访问它,键盘用户从未看到它,而且很多屏幕阅读器都忽略了它,通常建议是不要使用它。

最后的想法

另外请注意,对于通过鼠标导航的屏幕阅读器用户(即使用屏幕阅读器来帮助理解的人),上述两种技术都不太可能改变他们在鼠标悬停时听到的内容。

因此,如果您可以重新设计界面以容纳额外的文字,那么最好使用完整的文字。这样做也消除了对任何额外标记的需要,因此也是首选。

&lt;p&gt;Michael Jordan&lt;/p&gt;.

【讨论】:

  • 像 NVDA 这样的屏幕阅读器不会读取 p、span 和 div 等“内容标签”上的 aria-label 属性 - 它们会读取打开和关闭标签之间的文本。
  • 我的措辞不是很好,为了清楚起见,我添加了一个更新,感谢您指出这可能非常具有误导性。
  • 还添加了一点建议重新设计布局,这样您就不需要执行上述任何操作,以及从可访问性的角度来看您应该这样做的原因。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-17
  • 2020-09-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多