标准 · ARIA

角色 地标

search

用于包裹搜索表单的地标区域,让屏幕阅读器用户可直接跳转至站内搜索。原生 <search> 元素(HTML 2024)会自动携带此角色;如需兼容更多浏览器,可在 <form> 上使用 role="search"。

何时使用

将此地标包裹在网站主要搜索区域周围 — 通常是一个包含输入框和提交按钮的 <form>。如果条件允许,请使用原生 <search> 元素,它可免费提供地标语义。如需兼容旧版浏览器,可在 <form> 上使用 role="search" 代替。

该地标的意义在于将搜索功能暴露在屏幕阅读器地标菜单中,让用户可以直接跳转至此。若没有该地标,搜索表单只是页面上普通的一个表单。

搜索地标内部的输入框应使用 <input type="search"> — 这样可为字段提供搜索语义、平台清除按钮交互,以及移动端的「搜索」回车键。

何时添加标签

单个搜索地标无需标签。如果同一页面存在多个搜索区域(例如页头的全站搜索和页内内容的筛选搜索),则需为每个地标分别添加标签 — 如「站内搜索」「筛选结果」。

常见错误

  • 搜索表单缺少地标。用户无法通过地标导航跳转至此。
  • role="search" 被误用于 <input> 而非其外层的 <form> 或包装元素。该角色应用于容器,而非字段本身。
  • 存在多个搜索地标但未添加标签。
  • 搜索地标仅包裹输入框,提交按钮却置于地标之外。用户能找到输入框,但按钮处于地标范围之外。
  • 在 CRUD 页面中针对「按名称查找」的输入框使用 role="search" — 过度使用;那是筛选器,而非站内搜索。

示例

<!-- 推荐(现代 HTML)-->
<search>
  <form action="/search">
    <label for="q">Search</label>
    <input id="q" type="search" name="q">
    <button type="submit">Go</button>
  </form>
</search>

<!-- 兼容更多浏览器 -->
<form role="search" action="/search">
  <label for="q2">Search</label>
  <input id="q2" type="search" name="q">
  <button type="submit">Go</button>
</form>