最稳妥方案是用laypage.render独立渲染分页并设position:fixed+bottom:0,但分页容器必须脱离表格dom、elem传id字符串(不带#)、body加padding-bottom防遮挡,且table.render需禁用内置分页(page:false)。

layui分页条固定在页面底部的 CSS 方案
直接用 position: fixed + bottom: 0 是最稳妥的做法,但必须注意容器层级和表格重载干扰。
常见错误是把分页容器(比如 div#pagination)塞进表格 DOM 内部,结果每次 table.reload() 或翻页时,整个容器被替换,fixed 样式失效或 DOM 被销毁。
- 分页容器必须脱离表格渲染范围,放在
直接子级,或至少是表格父容器外层 - 加
z-index防止被其他弹层遮挡,推荐设为99999 - 给 body 或 html 加
padding-bottom(值 ≥ 分页容器高度),避免内容被遮住 - 如果页面有滚动条,
fixed容器会随视口固定,不是随文档流固定——这点常被误认为“没生效”
用 laypage.render 单独控制分页容器位置
laypage.render() 的 elem 参数只接受 ID 字符串(不带 #)或 DOM 对象,不能传选择器。想固定到底部,就让它绑定到一个专用于底部的空 div:
layui.laypage.render({
elem: 'footer-pagination',
count: 100,
limit: 10,
jump: function(obj) {
if (!obj.first) {
// 这里触发 table.reload 或 AJAX 请求新数据
table.reload('test', {
where: { page: obj.curr, limit: obj.limit }
});
}
}
});
对应 HTML:
<div id="footer-pagination"></div>
然后配 CSS:
.layui-laypage {
position: fixed;
bottom: 0;
left: 0;
width: 100%;
background: #fff;
border-top: 1px solid #eee;
z-index: 99999;
}
- 不要用
.layui-table-page类名——那是表格内置分页的样式,你用的是独立laypage,DOM 结构完全不同 -
elem: 'footer-pagination'错写成elem: '#footer-pagination'会导致innerHTML is null报错 - 如果页面有多个分页,每个
elemID 必须唯一,否则后渲染的会覆盖前一个
表格内置分页无法移动位置,必须禁用
table.render() 的 page: true 或 page: {…} 会强制把分页渲染在表格底部的 .layui-table-page 节点里,这个节点和表格 DOM 强绑定,margin、transform、flex 都无法把它“拖”到页面底部。
- 必须显式设
page: false,否则独立laypage和表格内置分页会冲突 - 后端接口必须返回准确的
count,否则laypage计算总页数出错,跳页异常 - 如果你用
url加载表格数据,记得在done回调里读取响应中的count,再传给laypage.render()
容易被忽略的兼容性细节
移动端 Safari 或旧版 Chrome 下,position: fixed 在有 transform 父容器里可能失效——检查你是否无意给 body 或某层父元素加了 transform: translateZ(0) 或 scale()。
- 表格高度设了
height时,内置分页会固定在表格底部,但那是容器内固定,不是页面底部固定,别混淆 - 如果页面用了
vh布局或flex: 1填满,fixed分页可能被压缩或错位,优先用position: absolute+bottom: 0配合父容器position: relative - 首次加载时,
laypage的jump会触发两次:一次是初始化渲染,一次是自动加载第 1 页数据,务必用!obj.first过滤
真正起作用的从来不是“怎么写 CSS”,而是分页容器是否脱离表格生命周期、elem 是否传对、count 是否实时准确——这三点漏掉任何一个,固定到底部都会半途失效。











