当你写一个alt时,你应该记住一些事情。其中一项建议当图片内容为装饰或包含重复信息时使用空alt=""
。
但是使用之间的区别是什么:
<img alt=""
<img aria-hidden="true"
<img role="presentation"
还是一起?
<img alt="" aria-hidden="true" role="presentation" src="…" />
答案 0 :(得分:5)
简答:
他们都有不同的目的。 image alt属性仅对图像元素有效。 aria-hidden适用于对所有用户隐藏的元素,而role = presentation有点像所有元素的空alt属性 - 不仅仅是图像(但支持的空间比空图像更少)。
更长的回答:
我建议阅读这些属性的文档,以了解它们应该如何使用。它们各自用于不同的目的。
alt属性:
图像替代文字旨在传达非文本内容的文本替代 - 如果图像没有替代文字,屏幕阅读器将忽略它,假设它纯粹是装饰性的。这个功能很广泛 - 如果不是普遍支持的话。
<强>咏叹调隐藏强>
aria-hidden,如w3c中所定义,适用于任何用户都无法看到或感知的元素&#34;。这意味着,如果有视力的用户无法看到它,那么访问辅助功能API的用户也应该隐藏它。一个示例用例是,如果用户必须单击一个按钮才能显示一个部分 - 该部分将对所有用户隐藏,并且还具有“咏叹调隐藏”部分。属性在其可见性更改时切换。应该注意的是,它并不总是以这种方式使用 - 许多人只是用它来隐藏屏幕阅读器,尽管这不是W3C中定义的预期目的。资料来源:https://www.w3.org/TR/wai-aria/states_and_properties#aria-hidden
<强>角色=介绍强>
role = presentation在w3c中定义为:&#34;一个元素,其隐式本机角色语义不会映射到辅助功能API&#34;。这与空的alt文本类似,但与alt属性不同,它可以用于不应映射到辅助功能API的各种其他元素。实际上,它与空的alt文本做同样的事情,但它不像空的alt属性那样受到广泛支持(sourece:https://www.w3.org/WAI/tutorials/images/decorative/)
w3c定义:https://www.w3.org/TR/wai-aria/roles#presentation
为什么不包括所有3?
要回答你的最后一点,不包括所有三个的最大原因是它完全矫枉过正。使用空的alt属性,屏幕阅读器已经忽略该元素。包括role = presentation和aria-hidden的一个潜在缺点是,这两个元素都将从可访问性API中删除元素,这可能会对使用API的用户产生负面影响,而这些用户不是屏幕阅读器。
答案 1 :(得分:2)
alt
属性设置为空字符串图像可以是装饰性的,也可以是其他内容的补充,与文档中的其他信息一样多余。
关于冗余的第二部分很重要,例如:
<h1><img alt="" src="logo.gif" />My company name</h1>
role=presentation
当图像纯粹装饰时就是这种情况,这意味着在这种情况下必须使用alt=""
。
您不必为具有空alt
属性的图片指定演示角色属性,因为它是标准浏览器的默认实现:
允许的ARIA角色属性值:
仅presentation
个{/ 1}}元素,img
属性的值为空(alt
),否则为任何角色值。
alt=""
如果您不想向Accessibility API提供信息,但希望将其提供给标准用户,请使用它。
有视力的人可能会使用屏幕阅读器(文盲,低视力......),因此必须谨慎使用。对于aria-hidden=true
代码,仅在img
不为空时才有用。
对于具有非空alt
属性的img
,它会假设您为使用屏幕阅读器的人提供了足够的上下文信息,而alt
信息可能只提供已在图像而不是有趣的盲人或其他屏幕阅读器用户。
alt
我认为这对于SEO而言不会引入冗余更有用。
如果您不想向屏幕阅读器提供信息:
<h1>Come to visit George</h1>
<img alt="Map to reach George" src="map.gif" aria-hidden="true" />
Take the highway A13 direction London.
When you reach London follow A2 highway in direction Liverpool.
alt
aria-hidden=true
alt=""
img
应为空role=presentation
alt
空img
隐含alt