不是标准html标签,浏览器不识别,无语义或功能;真正语义化搜索需用配合、name属性及label或aria-label。

search标签在HTML中并不存在
直接说结论:<search></search> 不是标准 HTML 标签,浏览器不识别,写进去也不会有语义或功能效果。你看到的可能是误传、文档笔误,或是把 <form></form> + type="search" 的 <input> 混淆成了独立标签。
真正该用的是 input[type="search"]
搜索框的正确实现方式是使用 <input> 元素,并设置 type="search"。它和 type="text" 基本一致,但有几点关键差异:
- 部分浏览器(如 Safari、Chrome)会自动添加清除按钮(× 图标),点击可一键清空
- 语义更明确:告诉辅助技术“这是搜索输入”,提升可访问性
- 可能触发系统级搜索优化(如 iOS 键盘显示“搜索”按钮而非“回车”)
- 样式上默认无边框圆角(取决于 UA stylesheet),但可通过 CSS 覆盖
基础写法示例:
为什么有人误以为有 标签
混淆来源主要有两个:
-
CSS 选择器误读:有人把
input[type="search"]当成标签名,实际是属性选择器 -
早期草案残留:HTML5 草案曾短暂讨论过
<search></search>,但最终未纳入标准;现在 W3C 和 WHATWG 规范里均无此元素 -
框架/组件库误导:某些 UI 库(如 Bootstrap、Material Web)提供
<search-field></search-field>自定义元素,但那是 Web Component,不是原生 HTML
替代方案:语义化容器用 或
如果你真想给搜索区域加语义包装,推荐用已有标准标签:
- 用
<form></form>包裹——它本身就是语义化的提交容器,且必含action和method - 用
<section></section>+aria-label="搜索"——适合页面内嵌搜索(如侧边栏搜索),强调内容区块 - 避免用
<div> + class ——丧失语义,对屏幕阅读器不友好 <p>例如:</p> <pre class="brush:php;toolbar:false;"><section aria-label="站内搜索"><form action="/search"> <input type="search" name="q" required> </form> </section></pre> <p>真正要注意的不是“怎么写 <code><search></search>”,而是别漏掉name属性(后端取值依赖它)、别忽略label或aria-label(可访问性硬要求)、别滥用autocomplete="off"(现代浏览器已限制其行为)。











