标准答案

  1. 跳转页面或资源用 a,并提供真实 href;触发页面内动作用 button。
  2. 不要用 href="#" 或空 href 伪装按钮,这会带来错误跳转和语义混乱。
  3. 不要用 div/span 加 click 伪装按钮,除非补齐 role、tabindex、键盘事件和焦点样式。
  4. 交互元素要有可访问名称,可以来自可见文本、aria-label 或 aria-labelledby。
  5. 所有键盘可操作元素都应该有清晰的 focus 样式。

题目解析

这题重点是原生语义优先。原生 a 和 button 已经包含大量键盘和辅助技术行为。

如果要手写交互语义,成本通常比直接使用正确元素更高,也更容易漏。

代码示例

跳转和动作应该使用不同元素。

HTML
<a href="/articles/">查看文章</a>
<button type="button" aria-label="关闭弹窗">关闭</button>

常见误区

  • 用 a href="#" 执行删除、提交、打开弹窗等动作。
  • 用 div 绑定 click,但键盘无法聚焦和触发。
  • 只在鼠标 hover 时有视觉反馈,没有 focus 样式。

作者信息