为屏幕阅读器突出显示内容
Highlighting content for screen readers
我有一个关于突出显示大型文本文档中匹配的搜索词的问题。因此,用户进行搜索,匹配的术语会以背景色突出显示。这对视觉用户来说很好,但对于视障人士 users/screen readers 这没有用。
这是当前代码的示例:
<span class="match">This is a match</span>
而 CSS 是:
.match {background-color:yellow;}
所以问题是......您如何让屏幕 reader 宣布或标记这些条款与屏幕 reader 的用户匹配。
您可以为此使用 ::selection
伪 class。
这是片段:
.match{
background-color:red;
}
.match::selection{
background-color:orange;
}
<span class="match">This is a match</span>
如果您想吸引对特定比赛的注意,最简单的方法是 select 并集中注意力。
屏幕阅读器跟随焦点,所以一般来说浏览光标应该跳转到相应的地方。不过,它并非始终有效,尤其是当您在页面加载时执行此操作。
<span id="match" tabindex="-1">Match</span>
document.getElementById('match').focus();
不要犹豫,将关注的元素扩展到严格匹配的字符串之外,以便用户可以有一些上下文。例如,将整个句子的重点放在单词匹配的地方,而不仅仅是单词。
您还可以创建一个 aria-live 区域:
<span aria-live="polite">match</span>
但它在这里看起来不太相关,因为您不会修改之后匹配的文本。 Aria-live 区域在页面加载时并不总是可靠地工作。
请注意,您可能希望使用 HTML5 元素 <mark>
来指示匹配项,这在语义上更好,在这里看起来非常合适。
我有一个关于突出显示大型文本文档中匹配的搜索词的问题。因此,用户进行搜索,匹配的术语会以背景色突出显示。这对视觉用户来说很好,但对于视障人士 users/screen readers 这没有用。
这是当前代码的示例:
<span class="match">This is a match</span>
而 CSS 是:
.match {background-color:yellow;}
所以问题是......您如何让屏幕 reader 宣布或标记这些条款与屏幕 reader 的用户匹配。
您可以为此使用 ::selection
伪 class。
这是片段:
.match{
background-color:red;
}
.match::selection{
background-color:orange;
}
<span class="match">This is a match</span>
如果您想吸引对特定比赛的注意,最简单的方法是 select 并集中注意力。 屏幕阅读器跟随焦点,所以一般来说浏览光标应该跳转到相应的地方。不过,它并非始终有效,尤其是当您在页面加载时执行此操作。
<span id="match" tabindex="-1">Match</span>
document.getElementById('match').focus();
不要犹豫,将关注的元素扩展到严格匹配的字符串之外,以便用户可以有一些上下文。例如,将整个句子的重点放在单词匹配的地方,而不仅仅是单词。
您还可以创建一个 aria-live 区域:
<span aria-live="polite">match</span>
但它在这里看起来不太相关,因为您不会修改之后匹配的文本。 Aria-live 区域在页面加载时并不总是可靠地工作。
请注意,您可能希望使用 HTML5 元素 <mark>
来指示匹配项,这在语义上更好,在这里看起来非常合适。