在我的网页上,我有一个锚(下面的代码),我在视觉上显示为完全隐藏文本的图像(标识)。我希望锚是:
- 可访问 - 由屏幕阅读器正确阅读,
- 鼠标悬停时显示工具提示(工具提示解释了图像标识,可能不是每个人都理解)。
我使用以下方法:
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
),导致“卡顿”。 - 我读到(在本文中)使用
title
可访问性是错误的,aria-label
应该改用。
所以我尝试重构以同时使用aria-label
and title
:
<a href="http://some-institution.com"
title="Some Institution"
aria-label="Some Institution"
class="replace-text-with-image">Some Institution</a>
现在 NVDA(我正在测试的屏幕阅读器)同时读取title
和aria-label
属性,导致再次卡顿。
其他可能不起作用的解决方案:
- 当我删除
title
属性并仅保留aria-label
它时,它可以正常读取,但我无法删除title
属性,因为这是对我想要拥有的视觉用户的解释。 - 我也可以只保留
title
属性,完全删除锚的内容,但我觉得拥有一个空锚并不是一个特别好的做法,不是吗?
这个问题的最佳解决方案是什么?我真的在它周围失去了我的头......