html 用标题替换图像的可访问方法(标题和咏叹调标签)

vm0i2vca  于 2022-12-02  发布在  其他
关注(0)|答案(2)|浏览(135)

在我的网页上,我有一个锚(代码如下),我直观地显示为一个图像(标识)完全隐藏的文本。我希望锚是:

  • 可访问-可由屏幕阅读器正确阅读,
  • 当鼠标悬停时显示工具提示(工具提示解释图像标识,可能不是每个人都能理解)。

我使用以下方法:

HTML格式

<a href="http://some-institution.com"
   title="Some Institution"
   class="replace-text-with-image">Some Institution</a>

CSS格式

.replace-text-with-image {
    /* Hide the text. */
    text-indent: 100%;
    white-space: nowrap;
    overflow: hidden;
    /* Display the image. */
    width: <image-width>;
    height: <image-height>;
    background-image: url(<url-to-image>);
    background-size: <image-width> <image-height>;
    background-repeat: none;
}

上述方法存在的问题:

  • 一个家伙向我报告说,在遇到链接时,他的屏幕阅读器读取了链接的内容(“一些机构”),然后链接的title(“一些机构”再次),导致“口吃”。
  • 我读到(in this article),使用title作为可访问性是错误的,应该使用aria-label

因此,我尝试重构以同时使用aria-labeltitle

<a href="http://some-institution.com"
   title="Some Institution"
   aria-label="Some Institution"
   class="replace-text-with-image">Some Institution</a>

现在NVDA(我正在测试的屏幕阅读器)读取titlearia-label属性,再次导致口吃。
其他可能不起作用的解决方案:

  • 当我移除title属性而只留下aria-label时,它读起来很好,但我不能移除title属性,因为这是我想要的可视化用户的解释。
  • 我也可以只保留title属性,完全删除锚的内容,但我觉得有一个空锚点不是一个特别好的做法,不是吗?

这个问题的解决方案是什么?

lymnna71

lymnna711#

首先,我鼓励您使用最简单的标记,即在图像元素周围包裹一个锚元素,如下所示:https://jsfiddle.net/pLuqqh8w/
您应该使用锚元素的title属性来描述链接的意图(即链接的目的地),并使用alt属性来描述图片的意图(即图片是什么)。这就是技术的设计工作方式。alttitle属性不应该是同一个东西。
话虽如此,如果你真的想有一个工具提示,而不是由屏幕阅读器宣布,这里是我会建议这样做:https://jsfiddle.net/neht6v01/
编辑:使用title属性本身并没有错,只是不应该依赖它,因为它在屏幕阅读器/浏览器组合中的支持非常不稳定。

v440hwme

v440hwme2#

你应该考虑一下你必须给予哪个ARIA角色。
a[href]是一个链接。它也可以是一个图像吗?不能。所以,创建一个图像。

<a href="http://some-institution.com" aria-label="Some institution">
   <span class="replace-text-with-image" role="img" title="Some institution">Some institution</span>
</a>

这样,屏幕阅读器将宣布aria-label,鼠标用户也可以使用title
title对于辅助功能来说还不错,但是对于屏幕阅读器来说可能就没用了,所以你不应该只依赖title属性,但是正如你所指出的,aria-label对于非屏幕阅读器用户来说是没用的。

相关问题