192
4

4 回答 4

302

nchor<a>元素只是指向或来自某些内容的锚点。最初,HTML 规范允许命名锚 ( <a name="foo">) 和链接锚 ( <a href="#foo">)。

命名锚格式不太常用,因为片段标识符现在用于指定[id]属性(尽管为了向后兼容,您仍然可以指定[name]属性)。没有属性的<a>元素[href]仍然有效

就语义和样式而言,<a>元素不是链接 ( :link),除非它具有[href]属性。这样做的副作用是,默认情况下,没有的<a>元素不会[href]在跳位顺序中。

真正的问题是<a>元素本身是否是 a 的适当表示<button>link在语义层面上, a和 a之间有明显的区别button

按钮是单击时会导致动作发生的东西。

链接是导致当前文档导航发生变化的按钮。在片段标识符 ( ) 的情况下,发生的导航可能在文档内移动,或者在 url ( )#foo的情况下移动到新文档。/bar

由于链接是一种特殊类型的按钮,因此它们通常会覆盖其操作以执行替代功能。从一致性的角度来看,继续使用锚点作为按钮是可以的,尽管它在语义上不太准确。

如果您担心将<a>元素(或<span>,或<div>)用作按钮的语义和可访问性,则应添加以下属性:

<a role="button" tabindex="0" ...>...</a>

按钮角色告诉用户特定元素被视为按钮,作为底层元素可能具有的任何语义的覆盖。

对于<span><div>元素,您可能希望为事件添加 JavaScript 键侦听器SpaceEnter触发click事件。<a href><button>元素默认这样做,但非按钮元素不这样做。click有时将触发器绑定到不同的键更有意义。例如,Web 应用程序中的“帮助”按钮可能绑定到F1.

于 2012-05-09T05:34:30.790 回答
69
于 2012-05-09T05:22:42.403 回答
22

是的,href使用没有属性的锚标记是有效的。

如果该a元素没有href属性,则该元素表示一个占位符,用于放置链接,如果它是相关的,则仅包含该元素的内容。

是的,您可以使用class和 其他属性,但您不能使用targetdownloadrelhreflangtype

如果href 属性不存在,则必须省略targetdownloadrelhreflang和属性。type

至于“我应该吗? ”部分,请参见第一个引文:“如果相关链接可能会放置在哪里”。所以我会问“如果我没有 JavaScript,我会使用这个标签作为链接吗? ”。如果答案是肯定的,那么是的,你应该使用<a>without href。如果不是,那么我仍然会使用它,因为生产力对我来说比边缘情况语义更重要,但这只是我个人的看法。

此外,您应该注意不同的行为样式(例如,没有下划线、没有指针光标,而不是 a :link)。

来源:W3C HTML5 推荐

于 2015-10-09T19:58:48.520 回答
4

这是有效的。data-toggle例如,您可以使用它来显示模式(或响应和data-target属性的类似事物)。

就像是:

<a role="button" data-toggle="modal" data-target=".bs-example-modal-sm" aria-hidden="true"><i class="fa fa-phone"></i></a>

在这里,我使用了 font-awesome 图标,它作为一个a标签而不是 a更好button,来显示一个模态。此外,设置role="button"使指针变为动作类型。如果没有hrefor role="button",光标指针不会改变。

于 2016-07-20T10:19:03.170 回答