Layui表格height不能设为"auto",仅支持数值、"full-N"格式字符串或函数;需手动监听resize并调用tableIns.resize();启用分页时建议配合maxHeight防溢出;固定列需同步设置各tbody tr的minHeight。

height 配置不能写 "auto",必须用数值或 "full-N"
传 "auto" 给 height 参数完全无效——Layui 会直接忽略它,回退到默认约 300px 的高度,导致内容多时截断、少时留白。真正可用的只有三类值:number(如 400)、string(仅限 "full-110" 这类格式)、function(返回数字)。其中 "full-110" 表示“视口高度减去 110px”,适合顶部有固定导航栏 + 搜索区 + 分页栏的常规分页表格布局。
常见错误是凭经验填 "full-100",但分页栏实际高度可能随数据量变化(比如页码数增多后换行),或主题更新后 padding/margin 改变,结果就是表格底部被遮挡或留大片空白。建议用浏览器开发者工具选中分页容器,看 outerHeight() 真实值,再累加顶部所有固定区块高度。
必须手动监听 resize 并调用 tableIns.resize()
Layui 不会自动响应窗口大小变化。光设了 height: "full-110" 或 height: function(){...},不绑定 resize 事件,用户拖拽浏览器边框后,表格高度纹丝不动。
- 先保存渲染实例:
var tableIns = table.render({...}) - 再绑定:
$(window).on('resize', function(){ tableIns.resize() }) - 如果表格在
layer.open弹窗或iframe里,监听对象要换成parent.window,否则事件根本触发不了 - 2.9.1+ 版本才完整支持函数式
height在resize中重算;旧版得在resize回调里调table.reload()并传新height
分页场景下推荐搭配 maxHeight 防失控
启用 page: true 时,表格内容高度波动大:第一页数据少,高度塌缩;最后一页数据密,撑满甚至溢出。只靠 height 很难兼顾。此时 maxHeight 是更稳的选择——它限制的是整个表格容器的最大高度,超出就出现内部滚动条,不影响分页控件和外部布局。
maxHeight 和 height 可共存:height 控制最小/基准高度,maxHeight 设硬性上限。例如:
table.render({
elem: '#demo',
url: '/api/list',
page: true,
height: 'full-120',
maxHeight: 600,
cols: [[
{field: 'title', title: '标题', minWidth: 200}
]]
});
这样既保证视口内尽可能展示更多行,又防止数据暴增时把分页栏顶飞。
固定列(fixed: "left")下高度同步容易漏掉
启用了固定列后,Layui 会生成多个 <table> 结构(主表、左固定、右固定等),它们的 <tr> 高度默认不同步。你只改了主表 tr 的 minHeight,固定列还卡在原始高度,视觉上就错位、对不齐。
必须对所有相关 tr 同时操作:
- 主表:
$('#demo .layui-table-main tbody tr') - 左固定列:
$('#demo .layui-table-fixed-l tbody tr') - 右固定列:
$('#demo .layui-table-fixed-r tbody tr')
别用 .css('height', ...) 硬设,优先用 .css('minHeight', ...),避免破坏 Layui 内部滚动定位逻辑。且每次翻页、搜索后都要重新执行——这些操作会重建 DOM,之前设的高度全部丢失。


















