本文介绍一种纯 css 方案,解决 html 表格中固定表头(`position: sticky`)与数据行悬停边框共存时出现的布局跳动、边框遮挡和缺失等问题,无需 javascript 即可实现完整环绕、无重绘抖动的 hover 边框效果。
在构建具有固定表头的长表格时,常见的需求是:表头始终可见(通常用 position: sticky 实现),同时数据行在鼠标悬停时显示清晰的视觉反馈(如完整边框)。但直接对
使用 outline 虽可避免跳动(因其不参与盒模型计算),但 outline 不支持单侧控制、无法圆角、且默认不包围整个行区域(尤其在 table-layout: auto 下表现不可靠),更关键的是——它无法在 tr 上可靠地渲染为完整矩形边框。
✅ 推荐解决方案:“伪边框容器”法(CSS-only)
该方法绕过对
以下是完整、可直接运行的代码示例:
| Column 1 | Column 2 | Column 3 | |
|---|---|---|---|
| abc | def | ghi | |
| jkl | mno | pqr |
? 关键要点说明:
⚠️ 注意事项:

此方案已在 Chrome、Firefox、Edge(Chromium)、Safari 最新版中验证稳定,真正实现了「固定表头 + 全向悬停边框 + 零跳动 + 纯 CSS」三大目标。