讲师中心 微信公众号
AI工具推荐 视频效率加速

CSS伪元素在搜索框图标中的应用_定位内置搜索放大镜

落芳吖_2376

落芳吖_2376

发布时间:2026-02-15 08:28:36

|

393人浏览过

|

来源于php中文网

原创

应关闭浏览器默认搜索图标并用伪元素自定义:先设-webkit-appearance:none隐藏原生控件,再用.search-wrapper::before绝对定位绘制图标,配合em单位和transform实现缩放自适应,同时清除::-webkit-search-cancel-button残留。

css伪元素在搜索框图标中的应用_定位内置搜索放大镜

搜索框里的放大镜图标为什么总对不齐

浏览器默认的 input[type="search"] 会渲染一个内置放大镜(尤其在 Safari 和 Chrome),但它不是 DOM 节点,没法直接选中、改颜色或调整位置。你用 padding-left 或 text-indent 硬推文字,往往只治标——换字体、换字号、换缩放比例,图标就又偏了。

真正可控的方式是关掉它,自己用伪元素画一个:

  • 给 input 加 appearance: none(注意加 -webkit-appearance: none 兼容旧版 WebKit)
  • 用 ::-webkit-search-decoration 和 ::-webkit-search-cancel-button 隐藏原生控件(Safari/Chrome 专用)
  • 然后在父容器上用 ::before 或 ::after 画图标,配合 position: absolute 精确锚定

用 ::before 还是 ::after 放图标更稳妥

必须用 ::before —— 因为 input 是替换元素(replaced element),::after 在它后面无法渲染(即使设了 content 也无效)。只有把图标塞进父容器(比如 div.search-wrapper),再用 ::before 绝对定位覆盖上去,才可靠。

示例结构:

立即学习“前端免费学习笔记(深入)”;

<div class="search-wrapper">
  <input type="search" placeholder="搜点什么">
</div>

对应 CSS:

  • .search-wrapper { position: relative; }
  • .search-wrapper::before { content: ""; position: absolute; right: 12px; top: 50%; transform: translateY(-50%); width: 16px; height: 16px; background: url('lens.svg') no-repeat center / contain; }
  • 别忘了给 input 右侧留出足够 padding-right,避免文字盖住图标

transform: translateX() 比 left/right 更抗缩放

用 right: 12px 看似简单,但用户缩放页面时,像素值不会随字体等比缩放,图标容易“漂移”。而 transform: translateX() 基于自身尺寸计算,和字体大小联动更强。

CSS婚礼策划服务机构宣传网站模板
CSS婚礼策划服务机构宣传网站模板

CSS婚礼策划服务机构宣传网站模板是一款适合提供婚礼策划和婚庆服务机构宣传网站模板下载。提示:本模板调用到谷歌字体库,可能会出现页面打开比较缓慢。

下载

更推荐写法:

  • 把图标容器设为 width: 1em; height: 1em;(1em = 当前字体大小)
  • 用 right: 0.75em + transform: translateY(-50%) 定位
  • 这样缩放时图标大小、间距都随文本同步变化,不用额外 media query 适配

顺便提醒:em 单位依赖父元素 font-size,如果父容器没设字体大小,可能继承到意外值,建议显式控制。

Safari 下 input[type="search"] 的取消按钮残留问题

即使加了 -webkit-appearance: none,Safari 仍可能在聚焦后显示一个半透明的 × 按钮,覆盖在你的自定义图标上。这不是 bug,是它的默认行为。

必须显式清除:

  • input[type="search"]::-webkit-search-cancel-button { appearance: none; }
  • 或者更彻底:input[type="search"]::-webkit-search-cancel-button { display: none; }
  • 注意:这个伪元素只在输入有内容且聚焦时存在,所以测试得输几个字再点进去看

另外,iOS Safari 的键盘“搜索”按钮文案不可改,这是系统级行为,CSS 无能为力——别在这儿浪费时间调样式。

伪元素画图标这事,看着小,但一旦涉及多端缩放、深色模式适配、高对比度设置,content 里塞 SVG data URL、用 background-color 做 fallback、监听 prefers-color-scheme 切换 fill 颜色……这些细节才是真卡点。

热门AI工具

更多
蛙蛙写作

一款AI论文写作工具,主要用于超级AI智能写作助手,适合需要提升相关任务效率的用户。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

小橡皮AI

一款AI工具,主要用于小橡皮一键去AI味,将机器味重的内容改得更有活人感,防止因为 AI 内容被平台打上 AI 标签,以及限流,适合需要提升相关任务效率的用户。

VibeKnow
VibeKnow Hot

一款AI视频创作工具,主要用于全球首个AI知识视频创作平台,文档、文章、网页,一键生成视频,适合需要提升相关任务效率的用户。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

PixPix
PixPix Hot

PixPix是一款面向电商视觉生产的AI商品图生成工具。

创客贴AI

创客贴AI是一款AI图像与设计工具,AI辅助的智能在线设计工具。

火山引擎

火山引擎是一款面向企业的云计算与AI服务平台。

相关专题

更多
chrome什么意思
chrome什么意思

chrome是浏览器的意思,由Google开发的网络浏览器,它在2008年首次发布,并迅速成为全球最受欢迎的浏览器之一。本专题为大家提供chrome相关的文章、下载、课程内容,供大家免费下载体验。

2886

2023.08.11

chrome无法加载插件怎么办
chrome无法加载插件怎么办

chrome无法加载插件可以通过检查插件是否已正确安装、禁用和启用插件、清除插件缓存、更新浏览器和插件、检查网络连接和尝试在隐身模式下加载插件方法解决。更多关于chrome相关问题,详情请看本专题下面的文章。php中文网欢迎大家前来学习。

5879

2023.11.06

Chrome开启无痕模式
Chrome开启无痕模式

本专题整合了Chrome无痕模式开启相关内容,阅读专题下面的文章了解更多详细教程。

4187

2026.03.24

DOM是什么意思
DOM是什么意思

dom的英文全称是documentobjectmodel,表示文件对象模型,是w3c组织推荐的处理可扩展置标语言的标准编程接口;dom是html文档的内存中对象表示,它提供了使用javascript与网页交互的方式。想了解更多的相关内容,可以阅读本专题下面的文章。

6541

2024.08.14

CSS position定位有几种方式
CSS position定位有几种方式

有4种,分别是静态定位、相对定位、绝对定位和固定定位。更多关于CSS position定位有几种方式的内容,可以访问下面的文章。

352

2023.11.23

css中的padding属性作用
css中的padding属性作用

在CSS中,padding属性用于设置元素的内边距。想了解更多padding的相关内容,可以阅读本专题下面的文章。

3232

2023.12.07

点击input框没有光标怎么办
点击input框没有光标怎么办

点击input框没有光标的解决办法:1、确认输入框焦点;2、清除浏览器缓存;3、更新浏览器;4、使用JavaScript;5、检查硬件设备;6、检查输入框属性;7、调试JavaScript代码;8、检查页面其他元素;9、考虑浏览器兼容性。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

914

2023.11.24

Docker Desktop怎么设置端口映射
Docker Desktop怎么设置端口映射

本专题聚焦Docker Desktop容器端口映射与访问配置,整理从创建容器、设置端口绑定到验证本地服务访问的操作流程。针对端口被占用、映射配置错误、容器服务无法访问等情况,也提供相应的检查方向,方便用户完成端口配置。

0

2026.11.03

Docker Desktop镜像构建教程
Docker Desktop镜像构建教程

想使用Docker Desktop将本地项目构建成Docker镜像?本专题围绕镜像构建的实际操作展开,介绍Dockerfile编写、构建命令使用、镜像标签设置和构建日志查看等内容,同时整理镜像无法生成、依赖安装失败及构建缓存异常等问题的排查思路。

0

2026.11.03

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Sass 教程
Sass 教程

共14课时 | 1.6万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn