我已经构建了一个使用div
的图片库,其中包含size
设置为cover
的背景图片,但我担心可访问性。
我的问题如下:
title
上的div
属性代替alt-text
代码中的img
属性吗?figcaption
元素作为兄弟添加到div
,并将figure
元素嵌套在一起帮助访问? aria-labeledby
上使用div
吗?div
?提前感谢您对这些问题的任何见解!
答案 0 :(得分:10)
您正在使用div
来显示图片,然后您不使用原生元素。
您必须定义ARIA role=img
以指定这是一张图片:
为了能够感知角色为
img
的元素,作者必须提供替代文本或由accessible name calculation确定的标签。
所以最好的办法是:
<div role="img"
aria-label="Description of the image"
title="Tooltip for users not using assistive technologies" />
请注意,由于屏幕阅读器并不总是使用title
属性,因此最好使用aria-label
。
答案 1 :(得分:2)
首先回答您的问题,并在最后找到可能的解决方案:
- 我可以使用
醇>title
上的div
属性代替alt
-img
标签上的文字属性吗?
没有。或者,更准确地说,你可以做到这一点,但几乎没有支持。由于div
是非交互式的,也不是一个里程碑,因此屏幕阅读器没有理由让它集中注意力并找到title
。此外,对title
的屏幕阅读器支持很差和/或不一致。我建议您查看PowerMapper维护的列表(截至2016年10月16日的最后更新时间):A "click here" link with TITLE attribute
- 将
醇>figcaption
元素作为兄弟添加到div
,并将figure
元素嵌套在一起帮助访问?
没有。屏幕阅读器对figcaption
不执行任何操作(因为浏览器不会以任何有意义的方式将其公开给SR)。
- 我可以在div上使用
醇>aria-labeledby
吗?
没有。属性aria-labelledby
(两个“L”)用于交互式内容或地标或类似物。由于div
是非交互式的,也不是一个里程碑,因此屏幕阅读器没有理由让它专注并找到aria-labelledby
。
- 我是否应该将文本注入div?
醇>
是
八九不离十。
考虑一种用于图像描述的离屏技术,例如:
<div>
<p class="SRonly">
Cemetery with a lone beam of sunlight shining on a Port-A-John.
</p>
</div>
CSS可能看起来像这样(也就是RTL语言):
.SRonly {
position: absolute !important;
clip: rect(1px 1px 1px 1px); /* IE6, IE7 */
clip: rect(1px, 1px, 1px, 1px);
top: auto;
left: -9999px;
width: 1px;
height: 1px;
overflow: hidden;
}
html[dir=rtl] .SRonly {
left: inherit;
left: unset;
right: -9999px;
}
这样&#34;图像替代&#34;只是当屏幕阅读器正常遍历页面时将读取的流内容。它将被视力正常的用户隐藏。它将使使用屏幕阅读器的低视力用户受益。对于使用屏幕阅读器的键盘用户来说,它不会成为障碍。
没有ARIA技巧,没有为了满足验证者而混淆HTML,没有添加可能会降低视力用户可用性的属性。
您可以在Bootstrap和其他库中看到.sr-only
。我故意让我的示例类名不同。
现在,正如所说的那样,如果您只是编写Codepen并链接它,我们可以非常轻松地测试它。
答案 2 :(得分:0)
最简单的方法是在&lt; img&gt;上使用alt =。这不仅是可访问图像的既定惯例,而且还满足可访问性检查工具,例如来自webaim的wave chrome extension或来自deque的axe。
如果你决定在&lt; div&gt;上使用title =,这是完全可以接受的并且可以访问,但是如果你计划在你的页面上运行任何accessiblity工具,那么它会失败,因为图像没有& #39; t有一个alt标签。你需要一个空白的alt =&#39; &#39;在&lt; img&gt;上标签