如何在Bootstrap中制作带图标的输入框组

月夜之吻

月夜之吻

2026-03-28

1008人浏览

原创

正确做法是将图标嵌套在.input-group-text内并用bootstrap icons或内联svg,safari需加align-items:center修复光标偏移,禁用已废弃的.input-group-addon类。

如何在bootstrap中制作带图标的输入框组

input-group 里图标放哪才不塌陷

Bootstrap 的 input-group 默认只认 .input-group-text.form-control,图标如果直接塞 <i></i> 或用 background-image,容易错位、垂直居中失效、响应式时被裁切。

正确做法是把图标包进 .input-group-text 容器,并用 Bootstrap 自带的图标类(如 bi bi-search)或内联 SVG:

  • 用 Bootstrap Icons 时,确保已引入 CSS 或 JS 版本,图标类必须和 .input-group-text 同级嵌套
  • 避免给图标元素设固定宽高,依赖 display: flex; align-items: center(Bootstrap 5+ 默认支持)
  • 如果用自定义 SVG,记得加 height: 1rem; width: 1rem;fill: currentColor,否则颜色/尺寸会脱节
<div class="input-group">
  <span class="input-group-text"><i class="bi bi-envelope"></i></span>
  <input type="email" class="form-control" placeholder="Email">
</div>

左侧图标输入框在 Safari 下光标偏移

Safari 对 flex 子项内行内元素的基线对齐处理更严格,.input-group-text 里的图标若没显式控制对齐,会导致 .form-control 光标上下偏移 1–2px。

解决只需一行 CSS 覆盖(无需全局改):

  • .input-group-textalign-items: center;(Bootstrap 5.3+ 已默认,老版本需补)
  • 确保图标父容器(即 .input-group-text)没有 line-height 冲突值,优先用 line-height: 1;
  • 不用 vertical-align: middle —— 在 flex 容器里它无效

input-group-addon 已废弃,别再用

Bootstrap 4 早期有 .input-group-addon,但 4.4 起标记为废弃,5.0 彻底移除。现在所有场景统一用 .input-group-text

Bootstrap
Bootstrap

Bootstrap 官方编译版下载、npm 安装和 CDN 引入入口。

下载

常见错误:

  • 复制旧文档代码,保留 .input-group-addon 类名 → 图标区域无样式、宽度异常
  • 混用 .input-group-text.input-group-addon → 样式冲突,边框/圆角不一致
  • 以为 .input-group-text 只能放文字 —— 实际它完全支持图标、按钮、甚至小开关

带图标的 input-group 响应式断点失效

当给 .input-group 外层加 col-* 栅格类时,图标区在小屏可能被挤压变形,尤其搭配 .form-control-sm 时。

关键在层级控制:

  • 不要对 .input-group-text 单独设 col 类 —— 它不是栅格单元
  • 需要等宽布局?用 .input-group 包裹两个 .form-control,再用 .input-group-text 放中间分隔符,而非图标
  • 图标需随屏幕缩放?用 font-size: clamp(0.875rem, 4vw, 1rem); 控制图标尺寸,比媒体查询更稳

实际项目里最容易漏的是 Safari 对 flex 基线的处理,以及误用废弃类名导致整个输入组样式断裂 —— 这俩问题一出现,往往先怀疑是图标字体没加载,其实只是类名或对齐没写对。

相关专题

更多
python是前端还是后端
python是前端还是后端

Python属于前端也属于后端,其灵活性和丰富的生态系统使得开发人员能够在不同的领域中灵活运用。本专题为大家提供python相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.11

1109

5

前端如何实现即时通讯
前端如何实现即时通讯

实现即时通讯的方法有WebSocket、Long Polling、Server-Sent Events、WebRTC等等。详细介绍:1、WebSocket,它可以在客户端和服务器之间建立持久连接,实现实时的双向通信,前端可以使用 WebSocket API来创建WebSocket连接,并通过发送和接收消息来实现即时通讯;2、Long Polling,是一种模拟实时通信的技术等等。

2023.10.09

2240

6

前端和后端的区别
前端和后端的区别

前端关注的是用户界面的设计和交互,而后端则注重数据处理和逻辑控制。想了解更多前端后端的相关内容,可以阅读本专题下面的文章。

2024.03.19

2130

13

php和前端的关联介绍
php和前端的关联介绍

php既可以作为前端语言,也可以作为后端语言。想了解更多php和前端的相关内容,可以阅读本专题下面的文章。

2024.03.22

2301

10

前端外包工作内容有哪些
前端外包工作内容有哪些

前端外包工作内容包括:1. 网站和应用程序开发;2. 用户界面和交互设计;3. 用户体验优化;4. 设计和视觉开发;5. 跨浏览器兼容性;6. 性能优化;7. 维护和更新;8. 项目管理和沟通。想了解更多前端的相关内容,可以阅读本专题下面的文章。

2024.05.22

335

5

bootstrap框架介绍
bootstrap框架介绍

本专题整合了bootstrap框架相关介绍,阅读专题下面的文章了解更多详细内容。

2026.03.18

419

21

bootstrap安装教程
bootstrap安装教程

本专题整合了bootstrap安装相关教程,阅读专题下面的文章了解更多详细操作教程。

2026.03.18

97

9

阿里icon
阿里icon

php中文网为大家提供阿里icon教程,阿里icon是指“Iconfont”,是由阿里巴巴矢量图标库提供的一种图标字体,包含了大量的中英文图标和符号。php中文网还为大家带来阿里icon的相关下载资源、相关文章等内容,供大家免费下载使用。

2023.06.15

746

3

热门下载

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

精品课程

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

共0课时 | 0人学习

Bootstrap Components 组件文档
Bootstrap Components 组件文档

共0课时 | 0人学习

Bootstrap Grid 栅格系统
Bootstrap Grid 栅格系统

共0课时 | 0人学习