html - 在 HTML 中,我怎样才能拥有只有屏幕阅读器(即盲人)才能访问的文本?

标签 html accessibility

我有一个网站,其中包含带有数字的彩色 div,例如里面有数字 2 的红色方 block 。颜色对于理解很重要。一位盲人用户给我发邮件问我是否可以让它为他的屏幕阅读器说“2 red”。

我尝试将其添加为 alt="2 red",但他说这没有任何作用。他认为它可能只会读取图像的 alt 标签。

div 有什么好的方法吗?

最佳答案

至于 alt 文本,你是对的,它只适用于图像。但是你可以使用 aria-label 代替非图像元素的 alt 属性,如下所示:

有效的解决方案

ARIA 标签 ★ ★ ★ ★ ★

aria-label(不要与 aria-labeledby 混淆,这是一个相关标签,而是从另一个元素的文本中提取可访问的名称)用于添加元素的屏幕外描述性内容与 alt= 属性向图像添加屏幕外描述性内容以在图像不可显示时使用的方式非常相似。

不同的是,aria-label 可以用在非图像元素上。

<div aria-label="test A"><p aria-hidden="true">test B</p></div>
<!--
     result (screenreaders):  test A
     result (regular):        test B
-->

aria-hidden 属性的添加隐藏了内部文本。

定位+剪辑+折叠★★★★

.screenreader {
    position: absolute !important; /* Outside the DOM flow */
    height: 1px; width: 1px; /* Nearly collapsed */
    overflow: hidden;
    clip: rect(1px 1px 1px 1px); /* IE 7+ only support clip without commas */
    clip: rect(1px, 1px, 1px, 1px); /* All other browsers */
}

剪辑用于完全隐藏 1px x 1px 元素,否则它仍然会在屏幕上可见。

排名★★★

.screenreader {
    position: absolute;
    left:-9999px;
}

<div>Wed<span class="screenreader">nesday</span>, Sept<span class="screenreader">ember</span> 24, 2014</div>

缩进★

.screenreader {
    text-indent: -5000px;
}

只要在页面布局范围之外,实际的缩进值并不重要。该示例会将内容向左移动 5,000 像素。

此解决方案仅适用于完整的文本 block 。它不适用于 anchor 或表单、从右到左的语言或与其他文本混合的特定内联文本。

不会工作

可见性:隐藏;和/或显示:无;

这些样式将对所有用户隐藏文本。文本从页面的视觉流中删除,并被屏幕阅读器忽略。如果您希望屏幕阅读器阅读内容,请不要使用此 CSS。但请务必将它用于您不想让屏幕阅读器阅读的内容。

宽度:0px;height:0px

如上,由于从页面流中移除了一个没有高度或宽度的元素,大多数屏幕阅读器将忽略此内容。 HTML 宽度和高度可能会给出相同的结果。如果您希望屏幕阅读器阅读内容,请不要将内容大小设置为 0 像素。

进一步:

关于html - 在 HTML 中,我怎样才能拥有只有屏幕阅读器(即盲人)才能访问的文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26032089/

相关文章:

Javascript 将 ID 添加到 HTML href

javascript - 我的管理面板中有引导侧边栏菜单,当我单击并获取链接时,有两个元素处于事件状态,如图所示,为什么?

javascript - 将脚本渲染为 HTML 而不执行

以辅助功能模式运行的 Windows 操作系统?

javascript - 使用辅助技术可读的属性

HTML5 主要元素与 ARIA 地标角色 ="main"

javascript - 跳转到另一个页面并同时向该页面传输数据

css - 为 body 标签设置样式是个好主意吗?

javascript - 屏幕阅读器的闪烁文本

android - 如何为视障人士编写 Android 代码?