应并行加载Font Awesome而非修改layui.css;用fa类名独立调用,表单按钮中加display:inline-flex居中;CDN需置于layui.css前;主题切换时用CSS变量同步图标颜色。
直接替换 layui.css 里的图标字体声明不靠谱
layui 默认用自研的 iconfont,所有图标类名(如 layui-icon-home)都绑定在它的字体文件和 css 规则上。硬改 layui.css 中的 @font-face 或覆盖 .layui-icon 的 font-family,会导致原有图标全部失效,且后续 layui 升级会直接覆盖你的修改。
正确做法是并行加载 Font Awesome,用独立类名调用,和 Layui 图标互不干扰:
- 在
<head>中引入 Font Awesome 的 CSS(CDN 或本地) - 用
fa fa-home这类原生类名写图标,不要试图混用layui-icon - 避免给
.layui-icon加全局样式,否则可能意外影响弹窗、表单等内置组件的图标渲染
在 Layui 表单、按钮里插入 Font Awesome 图标要加 display: inline-flex
Layui 的按钮(layui-btn)、表单项(layui-form-label)默认对子元素做垂直居中处理,但依赖 line-height 和 vertical-align。Font Awesome 图标是行内元素,默认尺寸常和文字不齐,容易偏上或留白异常。
实操建议:
- 给图标外层加
<span class="fa fa-search"></span>,再包裹一层带style="display: inline-flex; align-items: center;"的<span> - 或者统一在 CSS 中定义:
.fa-inline { display: inline-flex; align-items: center; },然后写<span class="fa-inline"><i class="fa fa-search"></i></span> - 别用
vertical-align: middle硬调——不同字号下表现不稳定,尤其在layui-btn-sm或layui-btn-lg下容易错位
layui.use 回调里操作图标 DOM 时,Font Awesome 可能还没就绪
如果在 layui.use(['form', 'layer'], function(){ ... }) 里动态插入带 fa 类的元素(比如用 layer.msg 显示带图标的提示),而 Font Awesome 是通过 CDN 异步加载的,可能出现图标短暂显示为方块或文字的现象。
关键判断点:
- 检查浏览器 Network 面板,确认
fontawesome.min.css已完成加载,且字体文件(woff2/woff)状态码是 200 - 不依赖
layui.use的执行时机来保证图标可用;把 Font Awesome 的<link>放在layui.css之前,让样式尽早生效 - 若必须动态注入,可监听
document.fonts.load('1em "Font Awesome 6 Free"')(需兼容性兜底),而不是盲目 setTimeout
图标颜色和大小在 Layui 主题切换时容易失控
Layui 的主题色(如 layui-bg-blue、layui-btn-danger)只作用于自带元素,不会自动传递到 fa 图标上。你写的 fa-trash 在红色按钮里还是默认灰色,需要手动同步。
常见疏漏:
- 没重写
.layui-btn-danger .fa的color,导致删除图标在危险按钮里看不清 - 用
fa-lg/fa-2x调大图标,但在响应式布局下,layui-col-md6宽度缩小时图标会撑破容器 - 暗色主题(
layui-layout-black)下,白色图标没加color: #fff,直接被背景吞掉
建议统一用 CSS 变量控制::root { --fa-color: var(--layui-text-color); },再让 .fa { color: var(--fa-color); },这样主题切换时能联动更新。
真正麻烦的是图标语义和视觉权重的匹配——比如一个 fa-download 放在 layui-btn-primary 里,用户第一眼未必意识到这是下载动作,得靠颜色、间距、文案共同强化。这点没法靠引入库解决,得自己掂量。

















