最简单稳当的方式是用loading配置项传html字符串(仅layui 2.9.10+),旧版本需手动dom操作+done回调清理;css覆盖需注意容器定位、高度及选择器优先级。
直接用 loading 配置项传 html 字符串是最简单、最稳的方式,但只适用于 layui 2.9.10 及以上版本;旧版本必须手动控制 dom + css 覆盖。
用 loading 配置项插入自定义 HTML(v2.9.10+)
这是官方支持的快捷方式,无需额外 CSS 或回调管理,loading 参数本身就能接 HTML 字符串。
-
loading值必须是字符串,不是布尔值——传true或false会退回到默认行为 - 推荐复用 Layui 自带图标和动画类:
layui-icon-loading-1+layui-anim layui-anim-rotate layui-anim-loop - 文字建议用
<p></p>包裹,避免换行错位;内联样式比外部 class 更可控(比如font-size: 30px) - 示例写法:
loading: '<i class="layui-icon layui-icon-loading-1 layui-anim layui-anim-rotate layui-anim-loop" style="font-size: 30px; color: #1E9FFF;"></i><p style="margin-top: 10px;">数据加载中...</p>'
旧版本或需要精细控制时:手动插入 + done 回调清理
低于 v2.9.10 的项目无法识别 HTML 字符串形式的 loading,此时得关掉默认 loading,自己加 DOM 元素,并在 done 回调里删掉它。
- 务必设
loading: false,否则默认 loading 和你手动加的会叠加甚至冲突 - 插入位置建议用
elem.before()或elem.append(),别用body级插入,否则定位容易飘 -
done回调一定得执行,哪怕数据为空也要触发,否则 loading 元素残留;error回调里也建议加清理逻辑 - 容器元素(如
#demo)必须有position: relative和明确高度(如min-height: 300px),否则绝对定位的 loading 会跑到 viewport 居中
改样式不改逻辑:覆盖 .layui-table-loading 类
如果你只想换个颜色、大小或背景,不换结构,直接 CSS 覆盖最轻量。Layui 的 loading 容器始终是 .layui-table-loading,它内部的图标是伪元素或 i 标签。
- 关键选择器优先级要够,比如加
!important或嵌套一层:#demo .layui-table-loading - 改背景透明度别只调
background,要连同rgba(255,255,255,0.9)一起设,不然底色发灰 - 图标颜色用
.layui-table-loading i控制,字体大小建议 24–30px,太小看不清,太大撑变形 - 不要动
layui.css源文件——升级时会被覆盖,你的 CSS 必须在 layui 样式之后加载
最容易被忽略的是容器定位和高度约束:没设 position: relative 和 min-height,loading 就会脱离表格区域乱飘;而 parseData 里任何异常都会让 loading 卡住不动,因为它根本不参与请求生命周期——只负责解析已返回的数据。











