Layui table 固定列支持 left/right 单独设置,允许多列同向固定但不可混用;需显式设 width、height 才生效,且 CSS 需手动继承至固定列容器,IE11 下建议降级处理。
layui table 固定列用 fixed 参数,但只支持 left / right 二选一
layui 的 table.render 确实能固定列,但不是“同时固定左右”,而是每列单独设 fixed: 'left' 或 fixed: 'right'。注意:同一张表里可以有多个 fixed: 'left' 列(按顺序靠左堆叠),也可以有多个 fixed: 'right' 列(靠右堆叠),但不能混用在同一个列上。
-
fixed: 'left'的列会脱离滚动容器,始终可见,宽度需显式设置(否则容易塌缩) -
fixed: 'right'同理,且会从表格最右侧开始反向排列 - 所有
fixed列的width必须是具体数值(如120),不能用'auto'或百分比 - 如果设置了
height表格高度,固定列在垂直滚动时才真正“固定”;没设height时,固定效果可能不明显或失效
table.render({
elem: '#demo',
cols: [[
{field: 'id', title: 'ID', width: 80, fixed: 'left'},
{field: 'username', title: '用户名', width: 120, fixed: 'left'},
{field: 'email', title: '邮箱', width: 160},
{field: 'action', title: '操作', width: 140, fixed: 'right'}
]]
});
固定多列时,fixed: 'left' 列顺序错乱怎么办
这不是 bug,是 Layui 渲染逻辑:所有 fixed: 'left' 列会被提取出来,按它们在 cols 数组中的原始顺序从左到右排列。但如果你中间穿插了非固定列,又在后面加了另一个 fixed: 'left',它仍会排在已有固定列最右边——这容易让人误以为“顺序没按代码写”。
- 确保所有想固定在左侧的列,都集中写在
cols数组前面(或至少彼此相邻) - 不要写成:
[{fixed:'left'}, {无fixed}, {fixed:'left'}],这样第二个fixed:'left'会跑到第一个后面,但视觉上被中间那列“隔开”,显得错位 - 如果必须逻辑分组,用注释区分,别靠位置判断渲染顺序
为什么固定列内容被截断、文字不换行、图标消失
这是固定列容器未继承样式导致的常见表现,本质是 Layui 对 fixed 列用了独立 DOM 结构,部分 CSS 没透传。
- 默认情况下,
.layui-table-fixed-l和.layui-table-fixed-r容器的font-size、line-height、padding可能和主表不一致 - 单元格内如果有
<button>、<i>(如<i class="layui-icon"></i>),需确保对应 class 在固定列区域也生效 - 图标字体(
layui-icon)有时因font-family未继承而显示为方块,可手动补一句:
.layui-table-fixed-l .layui-table-cell,
.layui-table-fixed-r .layui-table-cell {
font-size: 14px;
line-height: 24px;
}
.layui-table-fixed-l .layui-icon,
.layui-table-fixed-r .layui-icon {
font-family: layui-icon !important;
}
IE11 下 fixed 列错位或消失,怎么兼容
Layui 2.8+ 官方已不保 IE,但若项目仍需支持,问题多出在 IE 对 transform + position: sticky 混合渲染的 bug,而 Layui 固定列底层依赖这些。
- 避免在
table外层套用transform(如scale、translateZ),IE 下会破坏 fixed 列定位上下文 - 不要给
.layui-table-box设置overflow: hidden,否则 fixed 列可能被裁掉 - 最稳妥的方式是降级处理:IE11 下直接禁用
fixed,改用横向滚动 + 提示文案(如“← 拖动查看更多列 →”),比强行修复更可靠
固定列看着简单,但实际受 width、渲染顺序、CSS 继承、浏览器能力三重牵制。最容易忽略的是:没设 height 时固定列其实没真正“固定”,以及 IE 下 transform 破坏定位上下文这种隐性依赖。

















