宽表格外面套了一层横向滚动容器,表头跟着内容一起滑走,滚到右边完全不知道哪一列是什么。乍看像缓存或者权限的锅,追下去往往不是。
.table-wrap { overflow-x: auto; }
.table-wrap th {
position: sticky; top: 0; background: #fff;
}
追下去是这么回事:滚动容器里整张 table 一起位移,表头没有独立定位,sticky 又因为外层 overflow 被限制在滚动区里。只给 th 加 sticky 往往不够,容器本身也要配合,表头得单独处理。
「表格表头吸顶」相关的日志我一般连着看前后五分钟,单看一条报错经常判断不出是哪一步失败。验证用真实数据走一遍,测试数据太干净,边界情况根本碰不到。
能分两步做的操作就别合成一步,中间看一眼返回值,出问题好判断。
具体做法是,给表头单元格加 position: sticky 和 top: 0,让它停在顶部,背景色一定要写上;滚动容器只设 overflow-x,别再叠一层 overflow hidden,多一层就会生成裁剪上下文;或者把表头拆出来单独做一行,和下面的内容分开滚动。
验收就看一点,横向滑动表格时表头固定在顶部可见,滑动过程不会看错列。
