<a> 代表锚点
如果您在 <a> 元素上包含 [href] 属性,则它是指向某个位置的锚点,这意味着您可以转到新页面,即当前页面的特定片段(因此 @ 987654331@ 被称为片段标识符),或新页面的特定片段。
没有[href] 属性的<a> 元素历史上被分配了一个[name] 属性,它可以用作片段标识符的目的地。浏览器后来添加了对链接到任何项目的 [id] 属性的支持,现在这是链接到文档片段的首选方法。
这对于独立的<a> 元素意味着什么?
a[href] 元素是一个链接(这就是为什么它们在 css 中与 :link 匹配)。 链接是可点击的。 An a element without the [href] attribute is otherwise just a placeholder for where a link might otherwise have been placed,不可点击,也不在页面的跳位顺序中。
如果您希望您的链接可通过键盘导航,这对可访问性很重要 (WAI-ARIA),您需要执行以下操作之一:
- 将元素更改为
<button type="button">
- 保留
[href] 属性
- 添加
[tabindex="0"] 和[role="button"] 或[role="link"] 之一(可能还有一些样式)
有关[role] 属性的更多信息可以在WAI-ARIA docs 的the Roles Model section 中找到。
更改标记
如果您没有理由保留[href] 属性,您不妨使用<button> 元素:
<button type="button">
^^^^^^^^^^^^^
[type] 属性用于使元素成为通用按钮,否则<button> 将默认为[type="submit"],这可能是不可取的,因为它可能会触发表单提交。
如果您不能使用<button>(通常在内部标记必须包含<div> 时发生),您可以使用以下方法伪造<button>:
<div role="button" tabindex="0">Some clickable text</div>
您需要监听 keypress 事件并触发 Enter 和 Space 的 click 事件。
保留标记
如果您保留 <a> 元素及其 [href] 属性,则有许多选项可用于其值。
真实链接
例如
<a href="/some/location/for/users/without/js">
<a href="#document-fragment">
如果您需要为禁用 JS 的用户提供支持,您不妨将他们引导到一个在没有 JS 的情况下执行等效功能的页面。
通过扩展,这还包括提供文档片段链接以链接到同一文档中的内容。例如,可切换区域可以标记为:
<a href="#more" class="toggleable">Read More</a>
<div id="more">Lorem ipsum dolor sit amet</div>
这样使用 JS 的区域可以折叠和展开,没有 JS 的链接会将用户带到页面上的适当内容。
无用的href
例如
<a href="#">
<a href="javascript:void(0)">
<a href="about:blank">
如果您在 JavaScript 中阻止默认行为,并且您不支持禁用 JS 的用户,则可以使用“dud”href 值将链接保持在跳动顺序并自动启用Enter 触发click 事件。您应该添加[role="button"],因为<a> 标签不再用作链接,而是用作按钮。
<a href="#" role="button">Some clickable text</a>