fontawesome 6 免费图标需用 fontawesome-free cdn 的 all.min.css 引入,如 ,默认不支持 fas 等旧别名,需额外加载 js 启用或改用 fa-solid 前缀。

FontAwesome 6 的 CDN 链接现在不能直接用 font-awesome.min.css 了
新版 FontAwesome 6 默认不提供单文件 CSS 引入方式,官方 CDN 返回的是模块化加载器(@fortawesome/fontawesome-svg-core + 图标包分离),直接 link 旧式 CSS 文件会 404 或图标不显示。
常见错误现象:fa-solid fa-user 类名写了但图标空白;控制台报 Failed to load resource: the server responded with a status of 404 ();或图标变成方块/问号。
- 必须区分
fontawesome-free(免费版全量 CSS)和@fortawesome/free-solid-svg-icons(JS 模块化引入)两种路径 - 免费用户推荐用
fontawesome-free的 CDN,它保留了传统 class 写法,兼容老项目 - 不要复制官网“Get Started”页里带
script type="module"的 JS 示例——那是给现代构建工具准备的,直接扔进 HTML 会报ReferenceError: require is not defined
怎么在 HTML 里一行引入 FontAwesome 6 免费图标(无构建工具)
用官方托管的 fontawesome-free 包,它把所有免费图标打包成 CSS + WebFont + SVG Sprite,支持 class 直接调用,和旧版体验一致。
正确写法(放在 中):
立即学习“前端免费学习笔记(深入)”;
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.0/css/all.min.css">
注意几个关键点:
- CDN 地址必须含
/css/all.min.css,不是/webfonts/下的字体文件路径 - 版本号建议锁定(如
6.5.0),避免某天升级后图标类名变动(比如fa-user-circle在 6.x 已弃用) - 如果只用 solid 图标,可换为
css/solid.min.css减少体积,但记得 class 前缀得统一用fa-solid(不是fas) - 别混用:
fas fa-user是 FontAwesome 5 写法,6.x 默认关闭别名映射,要启用得额外加 JS 初始化(见下一条)
为什么 fas fa-user 突然不显示了?如何恢复 5.x 的 class 别名
FontAwesome 6 默认禁用了 fas/far/fab 这类短前缀别名,只认 fa-solid/fa-regular/fa-brands。这是为了消除歧义(比如 fab 在 5.x 既表示品牌图标,又可能被误写成 far)。
如果你有大量存量代码,不想改 class 名,可以手动启用别名:
<script src="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.0/js/all.min.js"></script>
但要注意:
- 这个 JS 文件体积比纯 CSS 大 3 倍以上(约 1.2MB),影响首屏渲染
- 必须在
<link>之后、任何图标 DOM 渲染之前执行,否则图标初始化失败 - 启用后
fas会映射到fa-solid,但fa-user-circle这类已移除的图标仍不会回来——得手动换成fa-circle-user
图标显示异常时优先检查这三件事
90% 的“图标不显示”问题不是引入错了,而是环境或配置干扰了字体/样式加载。
- 检查浏览器控制台 Network 标签页:确认
all.min.css和webfonts/*.woff2请求状态是 200,不是 403(某些内网环境会拦截外部字体) - 检查元素 computed style:如果
font-family: "Font Awesome 6 Free"没生效,可能是父级 CSS 重置了font-family,需加!important或提升选择器权重 - 检查图标 class 是否拼错:
fa-solid fa-user中间是空格,不是连字符;fa-solid后必须跟图标名,不能写成fa-solid-user
真正麻烦的不是怎么引,而是引完发现图标被项目里某个 CSS reset 给 font-family: inherit 覆盖了——这种问题往往要翻好几层父元素才定位到。










