chrome和safari中search输入框的搜索图标是webkit ua样式产物,firefox不支持;隐藏需用-webkit-appearance: none,清除按钮需单独处理,软键盘“搜索”键显示与enterkeyhint="search"相关,与图标无关。

search类型input的“搜索图标”根本不存在
Chrome 和 Safari 确实会在 input[type="search"] 右侧显示一个放大镜图标,但这个图标不是标准规范的一部分,而是 WebKit 内核的 UA 样式产物;Firefox 完全不渲染它,也没有 ::-moz-search-decoration 这类伪元素能干预——所谓“隐藏搜索图标”,本质是处理 WebKit 特有的视觉残留。
隐藏 WebKit 的搜索装饰图标(放大镜)
旧版 Safari 曾支持 ::-webkit-search-decoration,但该伪元素在 Safari 16.4+ 已被弃用,部分版本直接忽略。现在唯一可靠方式是重置外观并手动控制:
-
-webkit-appearance: none必须加,否则图标可能残留或布局错乱 - 配合
background或::after手动插入 SVG 图标(如果真需要图标) - 若只想“去掉默认图标”,仅设
appearance: none就够了,无需额外隐藏伪元素
别混淆:清除按钮(×)和搜索图标(放大镜)是两回事
开发者常把右侧的 × 清除按钮误认为“搜索图标”,但它们逻辑独立:
- 清除按钮对应伪元素:
::-webkit-search-cancel-button(仅 WebKit 有效) - 隐藏它必须用
display: none,opacity: 0或visibility: hidden仍占空间,会导致文字被挤出或点击区域偏移 - 隐藏后务必同步调整
padding-right,否则输入内容会和原图标位置重叠 - Firefox 110+ 才支持原生清除按钮,且不响应
::-webkit-search-cancel-button—— 想全平台一致,只能 JS 模拟
移动端软键盘“搜索”键和这个图标完全无关
键盘右下角显示“搜索”而不是“回车”,只取决于两个条件:
-
input必须在合法<form></form>内,且有enterkeyhint="search" - 不能设
readonly或disabled,否则退化为“完成”或“回车” - iOS Safari 要求同时满足
type="search"+enterkeyhint="search";Android Chrome 只认enterkeyhint,type是冗余的
也就是说,哪怕你用 appearance: none 把所有 UA 样式干掉,只要满足上述条件,软键盘照样显示“搜索”键——它和页面上有没有放大镜图标毫无关系。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











