You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

实现占满空间且表头固定的静态div与table组件(纯CSS方案)

纯CSS实现固定顶部面板与表头、仅表格tbody滚动的布局

以下是满足需求的纯CSS解决方案,无需JS计算即可实现顶部面板和表头固定、仅表格主体滚动的效果:

修正后的完整代码

CSS 代码

.container {
  display: flex;
  flex-direction: column;
  height: 100vh;
  overflow: hidden;
  margin: 0;
  padding: 0;
}
.top-panel {
  padding: 10px;
  background-color: #f0f0f0;
  flex-shrink: 0; /* 防止顶部面板被压缩 */
}
.table-container {
  flex: 1;
  overflow: hidden;
  padding: 0 10px;
}
.table-container table {
  width: 100%;
  border-collapse: collapse;
  table-layout: fixed; /* 固定列宽,保证表头与单元格对齐 */
}
.table-container thead {
  display: table;
  width: 100%;
  background-color: #fff; /* 避免滚动时tbody内容穿透表头 */
}
.table-container tbody {
  display: block;
  height: calc(100% - 42px); /* 减去thead的高度,可根据实际样式调整 */
  overflow-y: auto;
}
.table-container th, .table-container td {
  border: 1px solid #ddd;
  padding: 8px;
  text-align: left;
  width: 33.33%; /* 三等分列宽,可根据列数调整 */
}

HTML 代码

<div class="container">
  <div class="top-panel">
    <h2>Top Panel</h2>
    <p>This content is always visible, as well as headers for table.</p>
  </div>
  <div class="table-container">
    <table>
      <thead>
        <tr>
          <th>Header 1</th>
          <th>Header 2</th>
          <th>Header 3</th>
        </tr>
      </thead>
      <tbody>
        <tr><td>Row 1 Col1</td><td>Row 1 Col2</td><td>Row 1 Col3</td></tr>
        <tr><td>Row 2 Col1</td><td>Row 2 Col2</td><td>Row 2 Col3</td></tr>
        <tr><td>Row 3 Col1</td><td>Row 3 Col2</td><td>Row 3 Col3</td></tr>
        <tr><td>Row 4 Col1</td><td>Row 4 Col2</td><td>Row 4 Col3</td></tr>
        <tr><td>Row 5 Col1</td><td>Row 5 Col2</td><td>Row 5 Col3</td></tr>
        <tr><td>Row 6 Col1</td><td>Row 6 Col2</td><td>Row 6 Col3</td></tr>
        <tr><td>Row 7 Col1</td><td>Row 7 Col2</td><td>Row 7 Col3</td></tr>
        <tr><td>Row 8 Col1</td><td>Row 8 Col2</td><td>Row 8 Col3</td></tr>
        <tr><td>Row 9 Col1</td><td>Row 9 Col2</td><td>Row 9 Col3</td></tr>
        <tr><td>Row 10 Col1</td><td>Row 10 Col2</td><td>Row 10 Col3</td></tr>
        <tr><td>Row 11 Col1</td><td>Row 11 Col2</td><td>Row 11 Col3</td></tr>
        <tr><td>Row 12 Col1</td><td>Row 12 Col2</td><td>Row 12 Col3</td></tr>
      </tbody>
    </table>
  </div>
</div>

关键实现说明

  • 容器布局:.container采用垂直flex布局,占满整个视口高度,overflow:hidden避免出现全局滚动条。
  • 顶部面板固定:给.top-panel添加flex-shrink:0,确保其不会被下方的表格容器压缩,始终保持自身高度并固定在顶部。
  • 表格容器占满剩余空间:.table-container通过flex:1占据容器剩余的所有空间,overflow:hidden限制表格的滚动范围。
  • 表头与主体分离:将thead设置为display:table以保持表格布局,tbody设为display:block并指定高度,开启垂直滚动;同时通过table-layout:fixed和固定列宽保证表头与单元格对齐。
  • 视觉优化:给thead添加背景色,避免滚动时tbody的内容穿透表头。

内容的提问来源于stack exchange,提问作者Lonli-Lokli

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 03:03:21