sticky 在表格中不生效是因为表格单元格(td/th)默认 display: table-cell,不满足 sticky 定位所需的块级上下文;解决方案是将 thead/tbody 设为 display: block、tr 设为 display: flex,并确保父容器有高度和滚动。
在使用 CSS 的 position: sticky 时,如果发现它在表格元素(如 th 或 td)中不起作用,通常是因为表格内部的 display 特性导致的。表格单元格默认的渲染方式会限制 sticky 定位的生效。
table, thead, tr, td 等)有特殊的 display 行为:
tr)表现为 display: table-row
td/th)是 display: table-cell
因此,直接对 th 或 tr 设置 position: sticky 很可能无效。
display: block 或 flex 等支持 sticky 的显示模式:
thead 和 tbody 设置为 display: block
tr 改为 display: flex 并设置固定宽度示例代码:
| 姓名 | 年龄 |
|---|---|
| 张三 | 25 |
| 李四 | 30 |
这样表头就能在 tbody 滚动时固定在顶部。
div + Flexbox 实现类似表格的布局:
div 模拟 table、row、cell
display: flex 和 position: sticky
基本上就这些。关键在于理解 sticky 对父级 display 的依赖,调整结构让 stic
ky 能正常工作。