给表格首列加了 position: sticky; left: 0,横向拖动时第二列的文字直接盖在首列上,两层字叠在一起,完全看不清。第一次遇到会往复杂处想,其实漏掉的多是个小前提。
td:first-child {
position: sticky; left: 0; z-index: 2;
background: #fff;
box-shadow: 1px 0 0 #e5e5e5;
}
sticky 元素默认没有背景,后面的单元格会透上来,层级也没提,谁在后谁在上。border-collapse: collapse 还会让粘住那一列的边框消失,看起来像被切掉。这一点先确认清楚,后面就不用反复试。
「表格首列固定」这个问题文档写得含糊,实际行为以当前版本为准,别照旧版本的结论套。把复现步骤压到三条以内,交给同事也能跑出来,才算真的定位清楚。
改动写完就同步给同事,下一个人踩同一个坑,成本还是你的。验证用真实数据走一遍,测试数据太干净,边界情况根本碰不到。
具体做法是,首列单元格补上不透明背景,颜色和表格底色一致,别用 transparent;加 z-index: 2 和右侧阴影,明确分隔线,压住后面的内容;表格改成 border-collapse: separate,边框用 box-shadow 画,别用 border。
改完照着核一遍,横向拖到最右,首列文字始终清晰,没有和第二列重叠,分隔线一直在。
