可通过 CSS 覆盖 .layui-layer-loading3 类自定义 GIF 加载图标,或用 layer.msg 配合 HTML 内容实现灵活控制;修改 .layui-layer-ico16 样式可调整默认图标的颜色与尺寸。

想让 layui layer 的 loading 动画符合项目 UI 规范,比如换成公司标准蓝色旋转图标、去掉默认灰色遮罩、或在文字下方居中显示 GIF 动图,不能靠传参直接替换图片路径——layer.load() 的 icon 参数只接受 0、1、2 三个整数,超出范围会静默失效,且不支持传入 URL 字符串。
用 CSS 覆盖 .layui-layer-loadingX 类换图标
这是最稳定、兼容所有 layui 版本(包括 2.8.x 至 2.9.10+)的方式,本质是重写伪元素或背景图。
第一步:确认你要覆盖的 class 名。调用 layer.load(3) 后,Layui 不会自动创建 .layui-layer-loading3 ——【你必须先在 CSS 中声明这个类,它才会被加到 DOM 上】。
第二步:在你自己的 CSS 文件末尾(确保加载顺序在 layer.css 之后),插入如下样式:
/* 支持 layer.load(3) 自定义 GIF */
.layui-layer-loading.layui-layer-loading3 {
background: url(../images/loading-rotate-blue.gif) no-repeat center !important;
background-size: 48px;
width: 48px !important;
height: 48px !important;
padding: 0 !important;
}
第三步:调用时传入 icon=3,例如:let index = layer.load(3, {shade: [0.15, '#000']});。注意 shade 值设低些,避免遮罩太暗盖住 GIF。
⚠️ 如果 GIF 没显示,打开开发者工具检查 Network 面板是否返回 404;再检查 DOM 中该 loading 层是否有 layui-layer-loading layui-layer-loading3 这两个 class 同时存在。
用 layer.msg 模拟 loading 并自定义内容
当你需要文字说明+图标组合、或图标位置需严格控制时,layer.msg 更灵活,且 content 可任意写 HTML。
方法一:基础文字提示
let load = layer.msg('处理中...', {icon: 16, time: false, shade: [0.05, '#000']});
方法二:带自定义 SVG 图标的 loading
layer.msg('<i class="layui-icon layui-icon-loading" style="font-size:24px; margin-right:8px;"></i>提交中', {icon: -1, time: false, shadeClose: false});
注意:icon: -1 表示禁用默认图标,让 HTML 内容完全接管显示;【layer.msg 默认 3 秒自动关闭,务必加 time: false,否则 loading 一闪就消失】。
修改默认 loading 的颜色和尺寸(不换图)
如果你只是想把灰色小圆圈改成深蓝色、放大一点,不用动图片,改字体图标即可。
找到当前使用的 icon 类型对应的选择器。layer.load(1) 对应 .layui-layer-loading1,其内部使用的是 .layui-layer-ico16(SVG base64 或字体图标)。
在你的 CSS 中覆盖:
/* 改 layer.load(1) 的图标颜色与大小 */
.layui-layer-loading1 .layui-layer-ico16 {
width: 32px !important;
height: 32px !important;
background-size: contain !important;
filter: hue-rotate(200deg) brightness(1.2);
}
这一步操作起来很简单,直接把上面几行粘贴进你项目的全局样式文件就行。但要注意:filter 仅对 base64 SVG 有效,若项目用了字体图标(如 layui-icon),请改用 .layui-layer-loading1 i::before 的 content 和 color 控制。


















