试图弄清楚为什么灯塔审计将我的许多链接标记为elements have discernible names
失败
<h3>
<a href="https://..." class="custom classes here">My New Post Title</a>
</h3>
我的问题是所有链接是否都需要aria-labels
,因为我认为如果只是普通链接,链接内的文本是必需的吗?
还是我的标记结构发生了其他事情?另一个标记的元素是这个:
<a class="custom classes" href="https://...">
<div class="custom classes" style="background-image: url('https://...');"></div>
<div class="article-thumbnails-small__title">Post Title</div>
</a>
为此,我了解到a
没有文字,所以aria-label
应该带有实际帖子标题的div,对吗?
已解决 我看错了元素...祝你有美好的一天。
答案 0 :(得分:1)
您的两个示例都很好,不应对其进行标记。还必须进行其他操作。您发布的代码是否正被测试?
ARIA属性应谨慎使用,并且仅应在本机标记不足时使用。如您所说,对于链接,如果<a>...</a>
之间有任何文本,则为“可识别文本”。
如果链接没有任何直接文本,但如果有子元素,则也可以,例如第二个示例。 <a>
没有文本,但是第二个<div>
具有“帖子标题”。在寻找“可分辨的文本”时,将考虑<a>
的所有子元素。当我 tab 指向该链接时,我会从屏幕阅读器中听到“帖子标题,链接”。
但是,CSS可能会影响这一点。如果第二个class="article-thumbnails-small__title"
上的<div>
具有display:none
或visibility:hidden
,则该文本将不可被识别,因为它是隐藏的。
如果班级有width/height:0px
,那么它可能也无法辨认。有时0大小的元素被认为是隐藏的。
如果您的链接没有文本,但是嵌套了<img>
,只要图片中包含alt
文本,就可以了。
好:
<a href="foo.html">
<img src="foo.jpg" alt="foo">
</a>
无可辨认文本:
<a href="foo.html">
<img src="foo.jpg">
</a>
答案 1 :(得分:1)
仅当出于某种原因无法或不希望使用可感知的链接文本时,才应使用链接的aria-label
属性(具有a
属性的href
元素) 。 (这包括图像链接中的alt
属性。)如果您具有普通的链接文本,则不应使用aria-label
属性,因为该属性将覆盖链接文本。请参阅文档“ step F”中的text alternative computation(可访问名称和描述计算1.1):a
元素具有固有的作用,可以根据其内容(即链接文本和/或链接中alt
上的img
属性)。但是,只有在链接元素上没有 aria-label
属性的情况下,才执行此步骤(请参见step C。
另请参见WAI-ARIA创作实践1.1中的Principle 2: ARIA Can Both Cloak and Enhance, Creating Both Power and Danger,该指南指出ARIA有时会覆盖原始语义或内容,并以aria-label
为例。
因此,如果Lighthouse标记的链接带有可察觉的链接文本且没有aria-label
属性,则肯定还有其他事情发生,例如隐藏元素的CSS。