使用alt标签来为锚链接添加描述信息是正确的吗?

160

对于一个锚链接,使用alt标签是正确的吗?例如:

<a href="#" class="test" alt="Something" src="sfasfs" ></a>
7个回答

152
这类问题最好通过查看官方规范来回答:
1. 前往规范:https://www.w3.org/TR/html5/ 2. 搜索 "a element":https://www.w3.org/TR/html5/text-level-semantics.html#the-a-element 3. 检查 "Content attributes",其中列出了a元素允许使用的所有属性:
  • 全局属性
  • href
  • target
  • download
  • rel
  • hreflang
  • type
4. 检查链接的 "Global attributes":https://www.w3.org/TR/html5/dom.html#global-attributes 你会发现,a元素不允许使用alt属性。
同时,你还会注意到src属性也不允许使用。

通过验证你的HTML,这样的错误将被报告给你。
请注意上面的内容是针对HTML5的,这是2014年W3C发布的HTML标准。在2016年,HTML 5.1成为了下一个HTML标准。查找允许的属性的方法也是相同的。你会发现,在HTML 5.1中,a元素可以有另一个属性:rev
你可以在W3C的HTML当前状态中找到所有HTML规范(包括最新的标准)。

2
我没有在a全局属性中看到title属性,是否可以在a中使用这样的title属性? - Yousef Altaf
2
@YousefAltaf:你在哪个页面上看?链接的那个,全局属性,列出了 title - unor
5
答案已被收藏为“如何查找HTML属性”。谢谢。 - Codebling
你没有回答这个问题。我们想要符合弹出突出显示链接的替代文本标准,但建议是它无效或不受支持。那么最好的方法是回到使用“alt”支架吗? - Salvador Valencia
1
现在这里有一个教人钓鱼的答案。 - mkataja
显示剩余3条评论

74

@FabioPoloni 谢谢,我已经预料到每个人都可以在页面下面找到链接 :-) - tomis
我认为如果有人对这个主题不了解,他可能会觉得它有点难懂;-) - Fabio Poloni
10
这条信息在 w3schools 上确实是正确的,但 w3schools 并非官方网站,也不可靠,可以查看 http://w3fools.com。 - Jukka K. Korpela
谢谢大家...除此之外,我的需求纯粹基于无障碍标准以及消除性能开销。我使用了一个精灵图像,同时想要提供alt属性,但是使用背景图像无法实现。相反,我有一个解决方法帮助了我。 - user2067736
2
“title”不再在w3schools上了。但是你可以使用它,因为它是一个全局属性:https://www.w3.org/TR/html5/dom.html#global-attributes - rosell.dk

45
"

“title” 在浏览器中得到了广泛应用。尝试:

"
<a href="#" title="hello">asf</a>

8
以下是一个答案的样例,它比之前10分钟的答案更简洁明了。同时,这个答案也包含以下链接:https://www.w3schools.com/tags/att_global_title.asp - mikael1000
1
我同意上述内容并没有回答问题,但是根据HTML5规范,title是不正确的(尽管大多数浏览器都会实现它)。 - felwithe
@felwithe,这可能是因为浏览器不仅实现了HTML5,我认为所有之前的HTML版本都被实现了,还有一些不那么严格的版本。那么问题并不特别针对HTML5。在我看来,如果某个东西在大多数浏览器中都能正常工作,那就是正确的HTML。 - Pablo Pazos

10
如果您希望像使用alt属性一样应用描述性信息,应该在锚标签中使用title属性。 title属性适用于锚标签,其唯一目的是提供有关链接页面的信息。
W3C建议title属性的值应与链接文档的标题相匹配,但这不是强制要求。

http://www.w3.org/MarkUp/1995-archive/Elements/A.html


或者,更有益的是,您可以使用ARIA可访问性属性aria-label(不要与aria-labeledby混淆)。 aria-label对于非图像元素具有与alt属性对于图像相同的功能,并包括一些优化措施,因为您正在为屏幕阅读器进行优化。

http://www.w3.org/WAI/GL/wiki/Using_aria-label_to_provide_labels_for_objects


如果您想描述一个锚标签,通常使用rel或rev标签是适当的,但您受到特定值的限制,它们不应用于人类可读的描述。
rel用于描述链接页面与当前页面的关系。(例如,如果链接页面是逻辑系列中的下一页,则为rel = next)
rev属性实质上是rel属性的反向关系。Rev描述了当前页面与链接页面的关系。
您可以在此处找到有效值列表:http://microformats.org/wiki/existing-rel-values

7

我使用了标题,它起到了作用!

标题属性提供链接的标题。除一种情况外,它完全是建议性的。该值为文本。例外情况是针对样式表链接,其中标题属性定义了备用样式表集。

<a class="navbar-brand" href="http://www.alberghierocastelnuovocilento.gov.it/sito/index.php" title="sito dell'Istituto Ancel Keys">A.K.</a>

6
在任何HTML规范或草案中,a元素都不允许使用alt属性(它应该是一个属性,而不是标签)。此外,似乎也没有任何浏览器将其识别为具有任何意义的属性。
可能的解释是,人们试图使用alt属性来与img元素的alt属性类比,期望在鼠标悬停时看到一个“工具提示”。但这样做存在两个问题。首先,每个元素都有自己的属性,在每个元素的规范中定义。其次,某些古老浏览器中alt属性呈现为“工具提示”的方式可能只是一种怪癖甚至是错误,而非可以预期的东西;alt属性应该只在因某种原因未显示图像时向用户呈现。
要创建一个“工具提示”,请改用title属性,或者更好的方法是搜索“CSS工具提示”并使用您喜欢的基于CSS的工具提示(它们可以被描述为隐藏的“层”,在鼠标悬停时变为可见)。

如何使用基于CSS的工具提示程序创建的链接? - Salvador Valencia

4

我很惊讶地看到所有的答案都声称在a标签中使用alt属性是无效的。这是绝对错误的。

Html不会阻止您使用任何属性:

<a your-custom-attribute="value">Any attribute can be used</a>

如果你问是否在 a 中使用 alt 属性是语义上正确的,那么我的回答是:
不是的。它用于设置图像描述 <img alt="image description" />
这取决于你使用属性的目的。以下是一个示例:

a::after {
  content: attr(color); /* attr can be used as content */
  display: block;
  color: white;
  background-color: blue;
  background-color: attr(color); /* This won't work */
  display: none;
}
a:hover::after {
  display: block;
}
[hidden] {
  display: none;
}
<a href="#" color="red">Hover me!</a>
<a href="#" color="red" hidden>In some cases, it can be used to hide it!</a>

再次强调,如果你问是否语义上正确使用自定义属性,我会说:

不是。使用 data-* 属性来实现语义化。


哎呀,这个问题是在2013年提出的。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接