简介Bootstrap Icons 1.11.3 图标库压缩包面向使用 Bootstrap 框架或独立开发网页、后台系统与前端组件库的设计师和开发者用于解决界面图标零散引入、风格不统一、缩放失真等问题。包内共 2000 个文件以 1994 个 svg 矢量图标为主体另含 css 与 min.css 样式文件、scss 源文件、json 元数据以及 woff、woff2 字体文件压缩包约 1.58MB兼顾类名调用与字体图标两种使用方式。图标覆盖箭头、表单控件、社交媒体、品牌标志等常见场景命名直观便于按需检索与二次定制。已有 443 人学习下载适合希望快速统一界面视觉语言、减少额外图片资源引入的前端项目参考使用。1. 图标库装错版本比没装更麻烦上周帮一个前端同学排查构建失败项目里npm ls bootstrap-icons显示 1.10.2但设计稿标注的是 1.11 新增的几个图标页面上一片空白方块。他以为是自己 CSS 写错了折腾了一下午最后发现是图标包版本对不上——字体文件里根本没有那几个字形。这种坑在图标库上特别常见因为图标不像 JS 库那样报错明显缺了就是缺了浏览器安安静静给你一个豆腐块。bootstrap-icons-1.11.3.zip这个包解决的就是这类问题它把 Bootstrap Icons 1.11.3 版本的完整图标资源打包成离线压缩包包含 SVG 源文件、图标字体woff/woff2、CSS 样式表和图标名称对照表。适合三类人内网环境没法走 CDN 的项目、需要把图标字体本地化以减少外部请求的站点、以及想直接拿 SVG 做二次处理的设计开发协作场景。下面按「环境确认 → 解压落位 → 引入配置 → 验证排错」走一遍装完能直接跑通。2. 装前把环境列清楚版本、目录和引入方式2.1 先确认你拿到的是 1.11.3 而不是别的版本离线包最容易出的问题不是装不上是装了个旧版本还以为是最新的。拿到 zip 之后先别急着解压核对文件名和内部版本号。Bootstrap Icons 的版本号在三个地方会体现压缩包文件名、package.json里的version字段、以及 CSS 文件头部的注释。三处对得上才算干净。# 不解压先看包内结构确认版本目录和关键文件都在 unzip -l bootstrap-icons-1.11.3.zip | head -40 # 解压后核对版本号三处应一致 unzip -q bootstrap-icons-1.11.3.zip -d bootstrap-icons-1.11.3 grep version bootstrap-icons-1.11.3/package.json head -5 bootstrap-icons-1.11.3/font/bootstrap-icons.cssunzip -l只列目录不落盘适合先摸底-q是静默解压避免刷屏。grep version匹配的是package.json里的版本字段注意有些打包工具会把它写成version: 1.11.3带空格正则里留个空格容错。CSS 头部注释一般形如/*! Bootstrap Icons v1.11.3 ... */这是最直观的版本凭证。三处不一致说明包被改过或混入了其他版本文件直接换包别将就。常见做法是解压到一个独立的 vendor 目录比如static/vendor/bootstrap-icons/不要和业务代码混在一起。这样后续升级只动一个目录回滚也干净。2.2 目录结构决定你该引哪个文件解压后你会看到font/、icons/、font/bootstrap-icons.css这几块。很多人一上来就把整个icons/目录几千个 SVG塞进项目结果构建时间暴涨。先搞清楚每个目录的用途再决定引什么。路径内容适用场景font/bootstrap-icons.css字体图标样式表页面用i classbi bi-xxx的场景font/fonts/*.woff2图标字体文件配合上面的 CSS 使用icons/*.svg单个 SVG 源文件需要内联 SVG 或做图标定制font/bootstrap-icons.json图标名与码点对照查图标名、做映射表如果你的项目是传统页面或 Vue/React 里用 class 方式引图标只需要font/整个目录。如果是要把 SVG 内联进组件做颜色控制才需要icons/下的单个文件。我一般两个都留着但只把font/纳入构建icons/作为素材库放仓库外或单独目录避免打包器扫描。提示font/目录里的 woff 和 woff2 要一起保留老浏览器只认 woff现代浏览器优先 woff2CSS 里已经写好了src回退顺序别手动删。2.3 引入方式二选一link 直引还是构建工具导入这一步是分水岭。纯静态站点直接在 HTML 里link引 CSS 最省事用 Webpack/Vite 的项目则要走模块导入否则字体路径解析会出问题。!-- 静态站点路径按你实际落位改href 指向 font 目录下的 css -- link relstylesheet href/static/vendor/bootstrap-icons/font/bootstrap-icons.css// Vite / Webpack 项目在入口文件里导入让构建器处理字体资源 import bootstrap-icons/font/bootstrap-icons.css;第一种方式的关键是href路径必须和实际部署路径一致/static/vendor/...是相对站点根目录的绝对路径部署到子目录时要改成相对路径或带前缀。第二种方式要求bootstrap-icons能被解析到也就是解压后的目录要放进node_modules或配置了别名。CSS 里字体路径是相对bootstrap-icons.css自身位置写的./fonts/bootstrap-icons.woff2所以只要 CSS 和 fonts 目录的相对关系没被破坏构建器会自动把字体文件搬到产物目录并改写路径。我一般倾向第二种因为构建工具会做 hash 和路径重写部署到 CDN 子路径时不用手改。但如果是内网老项目没有构建链第一种更稳记得把font/整个目录原样拷过去别只拷 CSS。3. 配置落地字体路径、图标名和按需裁剪3.1 字体路径写错是最高频的翻车点CSS 引进来但图标全是方块九成是字体文件没加载到。打开浏览器开发者工具的 Network 面板过滤woff看请求是 404 还是根本没发。404 说明路径不对没发说明 CSS 没生效或font-face被覆盖。/* bootstrap-icons.css 内部大致是这样理解它才能改对路径 */ font-face { font-family: bootstrap-icons; src: url(./fonts/bootstrap-icons.woff2?xxxx) format(woff2), url(./fonts/bootstrap-icons.woff?xxxx) format(woff); }url()里的./fonts/是相对于 CSS 文件所在目录的。所以只要bootstrap-icons.css和fonts/目录保持同级路径天然正确。出问题通常是有人把 CSS 单独拷到css/目录字体却留在原地相对关系断了。解决办法要么保持目录结构要么手动把url()改成绝对路径。?xxxx是版本查询串用来破缓存升级版本时它会变别手动删掉否则用户浏览器可能拿旧字体。注意如果你用构建工具且配置了publicPath或base字体请求路径会跟着变。部署到子目录后务必在 Network 里确认 woff2 返回 200而不是 200 但内容是 HTML说明被路由兜底了。3.2 图标名对照表怎么查、怎么写Bootstrap Icons 的图标名是bi-前缀加语义名比如bi-house、bi-search。1.11.3 相比早期版本新增了一批图标名字以官方bootstrap-icons.json为准别凭记忆写。# 从对照表里查包含某个关键词的图标名 grep -o bi-[a-z0-9-]* bootstrap-icons-1.11.3/font/bootstrap-icons.json | grep arrow这条命令从 JSON 里抽出所有bi-开头的键名再过滤。JSON 结构是{图标名: 码点}键名不带bi-前缀的情况也有所以更稳的做法是直接看icons/目录下的文件名——文件名就是图标名去掉bi-的部分。写页面时统一用i classbi bi-图标名/i两个 class 缺一不可bi是基础字体类bi-xxx是具体字形。如果图标显示成方块但字体已加载多半是图标名拼错或该版本没有这个图标。拿icons/目录ls | grep 关键词一查便知比猜快得多。3.3 按需裁剪只保留用到的图标完整字体包不小woff2 大概一百多 KB。如果项目只用了十几个图标全量引入有点浪费。Bootstrap Icons 本身不提供官方裁剪工具常见做法是用fantasticon或svgtofont这类工具从icons/目录里挑出用到的 SVG 重新生成一套精简字体。# 示例把项目实际用到的 svg 挑到一个目录再用工具重新打包 mkdir -p used-icons cp bootstrap-icons-1.11.3/icons/house.svg used-icons/ cp bootstrap-icons-1.11.3/icons/search.svg used-icons/ # 之后用 fantasticon 指向 used-icons 生成精简字体class 前缀保持 bi裁剪的取舍在于维护成本图标增删要重新跑一次生成流程适合图标集稳定的项目。图标经常变动的项目全量引入反而省心一百多 KB 在 gzip 后其实可以接受。我一般先全量上等性能审计点名了再裁别过早优化。4. 避坑排查五条装完才发现的坑4.1 图标显示方块但字体请求是 200现象Network 里 woff2 返回 200页面还是方块。原因CSS 里font-family被业务样式覆盖或者::before的content被重置。解决在开发者工具里选中图标元素看 Computed 面板的font-family是不是bootstrap-icons再看::before的content有没有码点。被覆盖就在业务 CSS 里提高选择器优先级或调整引入顺序把图标 CSS 放在业务样式之前。4.2 构建后字体 404开发环境却正常现象本地npm run dev图标正常打包部署后全变方块。原因构建工具的publicPath/base没配对字体被输出到带 hash 的目录但 CSS 里的相对路径没被正确改写。解决检查产物目录里fonts/是否真的存在确认构建配置的assetsDir和base。Vite 项目重点看baseWebpack 看output.publicPath。改完重新构建别只刷新页面。4.3 版本混用导致部分图标缺失现象大部分图标正常设计稿里几个新图标是方块。原因项目里同时存在两个版本的 bootstrap-iconsCSS 引的是旧的字体是新的或反过来。解决npm ls bootstrap-icons或全局搜bootstrap-icons.css确保只有一个来源。离线包场景下检查是不是有人把旧版font/目录覆盖了一半。清掉重复来源统一到 1.11.3。4.4 SVG 内联后颜色改不动现象用img srcxxx.svg引图标CSScolor不生效。原因img引入的 SVG 是独立文档外部样式进不去。原因说清楚就好办要么改用字体图标继承color要么把 SVG 内容内联进 HTML/组件让fillcurrentColor生效。icons/目录里的 SVG 默认就带currentColor内联后直接受父元素颜色控制。4.5 图标字体加载拖慢首屏现象首屏图标闪烁或延迟出现。原因字体文件默认阻塞渲染或加载时机偏晚。解决给link加relpreload预加载 woff2或在 CSS 里用font-display: swapBootstrap Icons 的 CSS 已内置处理别重复覆盖。如果只用了少量图标回到 3.3 做裁剪体积下来加载自然快。5. 装完怎么验证三步确认图标真的跑通了装完别只看首页有没有图标按下面三步走一遍才算稳。第一步本地起服务后打开开发者工具 Network过滤woff确认bootstrap-icons.woff2状态 200、类型font/woff2、大小和包内文件对得上。第二步在控制台执行下面这段确认字体已注册且字形可渲染。// 检查字体是否加载完成以及某个图标码点是否存在 document.fonts.ready.then(() { const loaded document.fonts.check(16px bootstrap-icons); console.log(bootstrap-icons loaded:, loaded); // 取一个已知图标元素读它的 ::before content const el document.querySelector(.bi-house); if (el) { const content getComputedStyle(el, ::before).content; console.log(bi-house content:, content); // 应输出一个码点不是 none } });document.fonts.check返回布尔值确认字体族已可用getComputedStyle(el, ::before).content能读出伪元素实际渲染的码点输出none说明 class 没匹配上或 CSS 没生效。第三步挑三个不同类别的图标一个基础图标、一个 1.11 新增图标、一个你业务里实际用的在页面上肉眼确认再切到移动端视口看缩放后是否清晰——字体图标是矢量正常不会糊糊了说明引的是位图或 SVG 被当图片拉伸了。我习惯在每次升级图标库后强制走一遍这三步尤其是document.fonts.check那行比肉眼看快得多。有次就是靠它发现 CSS 被业务样式覆盖省了半小时瞎找。希望帮到你。本文还有配套的精品资源点击获取
阅读完成 · 觉得有帮助?