所述<a>
nchor元件仅仅是一个锚,或从一些内容。最初,HTML规范允许使用命名锚(<a name="foo">
)和链接锚(<a href="#foo">
)。
命名锚格式不太常用,因为片段标识符现在用于指定[id]
属性(尽管为了向后兼容,您仍然可以指定[name]
属性)。没有属性的<a>
元素[href]
仍然有效。
就语义和样式而言,除非<a>
元素:link
具有[href]
属性,否则它不是链接()。这样做的副作用是,默认情况下,没有的<a>
元素不会[href]
处于Tab键顺序。
真正的问题是<a>
元素本身是否是的适当表示<button>
。在语义级别上,a link
和a 之间存在明显区别button
。
按钮是单击后导致动作发生的东西。
链接是一个按钮,可导致当前文档中的导航发生变化。如果是片段标识符(#foo
),则发生的导航可能是在文档内移动;如果是URL(/bar
),则发生的导航可能是移动到新文档。
由于链接是一种特殊类型的按钮,因此通常会将其操作重写为执行替代功能。从一致性的角度来看,可以继续使用锚点作为按钮是可以的,尽管从语义上来说并不十分准确。
如果您担心使用<a>
元素(或<span>
,或<div>
)作为按钮的语义和可访问性,则应添加以下属性:
<a role="button" tabindex="0" ...>...</a>
该按钮的作用告诉该特定元素被视为一个按钮作为用于任何语义底层元件可能有一个覆盖该用户。
对于<span>
和<div>
元素,你可能要添加JavaScript键侦听器Space或Enter触发该click
事件。<a href>
和<button>
元素默认情况下会执行此操作,但非按钮元素则不会。有时将click
触发器绑定到其他键更有意义。例如,Web应用程序中的“帮助”按钮可能绑定到F1。