FortAwesome/Font-Awesome · 上手攻略


1. 这是什么

FortAwesome/Font-Awesome 是 GitHub 上最知名的开源图标库——「The iconic SVG, font, and CSS toolkit.」。简单说,它是一套图标字体 + SVG sprite + CSS / JS 框架的合集,给网站、App、文档提供矢量图标。

仓库当前状态:

  • 仓库 6.x 分支代表 Font Awesome 6(Long Term Support,仅修关键 bug)
  • Font Awesome 7 已发布(2025 年发布,最新稳定版 7.3.0,2026-02 在 GitHub Releases 标记),引入了 4500+ 新图标、Sharp / Sharp Duotone 风格、Sketch / Slab-serif 等 Pro+ 图标包
  • Free 版图标采用 CC BY 4.0(icons)/ SIL OFL 1.1(fonts)/ MIT(code)三重许可——商业、个人、开源随便用
  • Free 版图标数 2 万+(Free 仓库 fontawesome-free),Pro 版(含品牌 / 高级风格)约 6 万+

仓库本身(FortAwesome/Font-Awesome)是官方 meta 仓库,主要放 README、UPGRADING、CODE_OF_CONDUCT 等。真正的图标文件、CSS、JS 在官方 npm 包 [@fortawesome/fontawesome-free](https://www.npmjs.com/package/@fortawesome/fontawesome-free) 以及 CDN 资源(jsDelivr / cdnjs / unpkg)中分发。GitHub Releases 页面提供完整的 6.x 和 7.x 版本归档下载。

2. 解决什么问题

Web/App 开发者经常需要大量图标(导航、操作按钮、社交媒体、品牌标识),痛点是:

  1. 图标散落各处——一个项目里今天用 Material Icons、明天用 Ionicons、后天又混 Bootstrap Icons,风格不一致、性能难优化、license 各异。
  2. 图标管理成本——SVG 一个个复制粘贴、压缩、命名,构建工具整合困难。
  3. CSS 字体 vs SVG sprite vs JS 组件三种集成方式各有适用场景,需要在同一图标库里灵活切换。
  4. 品牌图标合规——Twitter/X、Facebook、GitHub 等品牌图标不能用自有 logo 替代,必须用官方授权版本。

Font Awesome 解决了:

  • 统一来源:一个项目只用 Font Awesome 一个图标库就能覆盖 90% 场景。
  • 三种集成方式:Webfont(最简单)、SVG + JS(最灵活、可 tree-shake)、CSS-only Kit(零 JS)。
  • 开源免费 + 商业 Pro 双轨:Free 满足大多数项目,Pro(含 6 万+ 图标 + 高级风格 + Kits)是 SaaS 模式。
  • CDN 友好:jsDelivr、cdnjs 都同步了所有版本,无需自建。
  • 组件生态深:React、Vue、Angular、Ember 等主流前端框架都有官方封装包;Bootstrap、Tailwind UI、AdminLTE、Laravel 等模板默认集成;几乎所有静态站点生成器(Hugo、Jekyll、Hexo、Docusaurus)都有 Font Awesome 主题可选。
  • 稳定性强:自 2012 年发布以来,已经迭代了 7 个主版本,license 一直保持开源、商业友好,是企业项目几乎不需要担心合规问题的图标来源。

不是专门的设计资源库(iconography 设计感上 Material Symbols、Apple SF Symbols 更精致),但生态成熟度、文档完善度、CDN 同步速度、社区覆盖广度上无敌。对绝大多数中小型 Web 项目来说,Font Awesome 是"不需要思考的选择"——装上去就有 2 万+ 图标可用,配色、动画、尺寸、Tree-shake 都有官方解决方案;如果发现它不够用,再换更精细的设计资源库也不迟。

3. 快速安装

Font Awesome 7.x 当前推荐安装方式有三种,按使用场景选:

3.1 Webfont + CSS(最简单,零 JS)

适用于静态站点、不需要 tree-shake 的项目:

<head>
  <!-- 7.x CDN,jsDelivr -->
  <link
    rel="stylesheet"
    href="https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@7.3.0/css/all.min.css"
  />
</head>
<body>
  <i class="fa-solid fa-house"></i>
  <i class="fa-brands fa-github"></i>
  <i class="fa-regular fa-circle-user"></i>
</body>

注意:Font Awesome 官方文档更推荐用 Kit(需注册账号),CDN 是次选但可用。 版本号以发布日为准,7.3.0 为本攻略撰写时的稳定版,使用前可在 Releases 确认最新。

3.2 SVG + JS(推荐,支持 tree-shake)

适合现代构建工具(Vite / Webpack / Rollup)项目:

npm install @fortawesome/fontawesome-svg-core \
            @fortawesome/free-solid-svg-icons \
            @fortawesome/free-brands-svg-icons
# React / Vue 额外加
npm install @fortawesome/react-fontawesome @fortawesome/vue-fontawesome

最小使用示例(原生 JS):

import { library, dom } from '@fortawesome/fontawesome-svg-core';
import { faHouse, faUser } from '@fortawesome/free-solid-svg-icons';
import { faGithub } from '@fortawesome/free-brands-svg-icons';

library.add(faHouse, faUser, faGithub);
dom.watch(); // 自动扫描页面 <i class="fa-house"> 并替换为 SVG

React 示例:

import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
import { faHouse } from '@fortawesome/free-solid-svg-icons';
import { faGithub } from '@fortawesome/free-brands-svg-icons';

export function Header() {
  return (
    <header>
      <FontAwesomeIcon icon={faHouse} />
      <FontAwesomeIcon icon={faGithub} size="2x" spin />
    </header>
  );
}

3.3 使用 Kit(需注册 Font Awesome 账号)

  • 登录 fontawesome.com
  • 创建 Kit → 选择 Free 或 Pro、选择需要加载的样式(Solid / Regular / Brands / Sharp / Duotone)
  • 复制 <script src="https://kit.fontawesome.com/你的kitid.js" crossorigin="anonymous"></script><head>
  • 优点:可上传自定义图标、可在图标浏览器里点选、有版本控制和缓存优化

4. 核心用法

4.1 CSS 类的命名规则(Webfont 方式)

Font Awesome 7 的 class 格式:<前缀>-<风格简写> <图标名>

<i class="fa-solid fa-house"></i>            <!-- 实心 -->
<i class="fa-regular fa-circle"></i>          <!-- 描边 -->
<i class="fa-brands fa-github"></i>           <!-- 品牌 -->
<i class="fa-sharp fa-solid fa-bell"></i>     <!-- Sharp 风格(Pro) -->
<i class="fa-duotone fa-camera"></i>          <!-- Duotone(Pro+) -->

4.2 常用修饰类

<i class="fa-solid fa-house fa-2x"></i>          <!-- 放大 2 倍 -->
<i class="fa-solid fa-spinner fa-spin"></i>      <!-- 旋转动画 -->
<i class="fa-solid fa-heart fa-beat"></i>        <!-- 心跳动画 -->
<i class="fa-solid fa-user fa-fw"></i>           <!-- Fixed Width,宽度对齐 -->
<i class="fa-brands fa-twitter" style="color:#1da1f2"></i>  <!-- 直接上色 -->

4.3 SVG 模式下修改颜色 / 尺寸(React/Vue)

<FontAwesomeIcon icon={faHouse} color="#ff5722" size="3x" />
<FontAwesomeIcon icon={faSpinner} spin />
<FontAwesomeIcon icon={['fab', 'github']} />   {/* 数组写法:fab=brands */}

4.4 在 CSS 里伪元素用

.btn::before {
  font-family: "Font Awesome 7 Free";  /* 或 "Font Awesome 7 Brands" */
  font-weight: 900;                    /* Solid 是 900,Regular 是 400 */
  content: "\f015";                    /* fa-house 的 unicode */
}

Webfont 模式下 unicode 在 官网图标详情页 看。SVG 模式下用 JS API 不需要 unicode。

4.5 离线 / 自托管

  • Webfont:下载 @fortawesome/fontawesome-free zip,解压后 webfonts/ 放静态目录,css/ 引入
  • SVG:直接 import 子包(@fortawesome/free-solid-svg-icons 等),Webpack/Vite 会 tree-shake 掉未用图标

5. 典型适用场景

  • 网站导航 / 后台 UI:上万种通用图标覆盖 99% 业务
  • 品牌社交链接:Brands 集合含 GitHub、Twitter、LinkedIn 等官方授权 logo
  • 文档站点:常与 Docusaurus / VitePress 集成
  • 快速原型:不需要设计资源就能搭出像样的 UI
  • CMS 主题 / 模板市场:几乎所有付费主题默认带 Font Awesome

不适用:

  • 追求极致设计感——Material Symbols / Apple SF Symbols / Phosphor Icons 设计更现代、风格统一
  • 超大规模图标库(10 万+)——Material Icons / Noun Project 更全
  • 强 tree-shake 极度敏感的纯 SVG 项目——SVG + JS 模式仍会引入核心运行时(~30 KB gzip),超敏感场景可考虑 Phosphor 的纯 SVG sprite 或 lucide-react
  • 品牌定制图标——Kit 上传是唯一免费方案,但管理成本不如设计资源库

6. 坑与注意

  1. CDN 路径的版本号是写死的——升级要手改;推荐用 Kit 或 npm 包以便升级。
  2. Solid / Regular 切换 需切换 CSS 类(fa-solidfa-regular)或 React 组件的 weight,不能同一个图标两种风格混用——Pro+ 风格的 Sharp / Duotone 需要付费。
  3. Webfont 模式下图标颜色只能单一——默认继承 color,双色调只能用 Duotone(Pro)或 SVG 模式。
  4. 品牌图标必须用 Brands 集合——不要把公司 logo 自己做成图标塞 Solid 集合,可能侵权。
  5. Webfont 在旧 IE / 老 Safari 不支持 woff2——需要 fallback 或降级到 woff。
  6. 图标名称变化——Font Awesome 4 → 5/6/7 有不少图标重命名(如 fa-glassfa-martini-glass),升级时参考 UPGRADING.md
  7. Pro 图标在 Free 项目里会用空方框替代——上线前必查。
  8. Kit 模式下图标浏览器上传自定义 SVG 后需手动 commit 到 Kit 才生效——自动化部署要小心。
  9. 6.x 已进入 LTS,只修关键 bug——新项目建议直接上 7.x(7.3.0 当前稳定版)。

7. 与同类对比

资源 风格 集成方式 授权 中文/本地化
Font Awesome(本仓库) 通用、覆盖广 Webfont / SVG+JS / Kit Free: CC BY + SIL OFL + MIT 全球
Material Symbols Google 设计语言、现代 字体子集化 / SVG sprite Apache 2.0 全球
Phosphor Icons 极简、6 种权重 SVG / React / Vue MIT 全球
Lucide 简洁、tree-shake 友好 SVG sprite / React / Vue ISC 全球
Tabler Icons 大量免费 SVG SVG sprite / React / Vue MIT 全球
Bootstrap Icons Bootstrap 风格 Webfont / SVG MIT 全球

对比结论:Font Awesome 的独特优势是生态成熟度——几乎所有 CMS、框架、组件库(Bootstrap、Tailwind UI、AdminLTE 等)默认集成;如果项目没有特殊设计要求、想省事,Font Awesome 是最稳的选择。如果追求极致性能(bundle size)或现代设计语言,Phosphor / Lucide 更值得考虑。

8. 一句话推荐结论

图标库的事实标准——Web 端首选 7.x + CDN/Kit,构建工具用 SVG + JS tree-shake;Free 够用就 Free,需要品牌 / 高级风格再上 Pro。


参考来源

不确定处

  • 7.x 主分支(7.x / master)当前 commit 哈希未直接抓取,7.3.0 是 GitHub Releases 标记的稳定版(2026-02-10),后续可能有更新,使用前请到 Releases 确认。
  • Kit 注册流程、Pro+ 图标包定价以官网实时为准,本攻略不涉及付费细节。
  • Webfont 模式在某些极老浏览器上的 woff2 fallback 行为未在本环境实测,建议 IE11 等目标环境上线前做兼容性测试。
  • React/Vue 各框架封装包版本兼容性请以各包 README 为准,与 Font Awesome 7 主版本需对齐。