【问题标题】:Table with horizontal and vertical scroll with fixed header带有固定标题的水平和垂直滚动表
【发布时间】:2019-09-26 03:36:55
【问题描述】:

我确实有一个带有固定标题的水平和垂直滚动表,其中的元素占用了它需要的空间。我正在使用 React。如果仅靠 CSS 无法解决它,如果还有基于反应的解决方案,那就太棒了。

注意:

  • 我确实尝试了其他解决方案here,但这不是我想要的
  • 如果 td 也可以设置 min-width 就更好了
  • 点击标题进行排序和过滤时显示菜单

【问题讨论】:

标签: javascript html css reactjs css-tables


【解决方案1】:

有一个简单的 CSS 解决方案可以修复表格中的行(标题)和列。

th {
  position: sticky:
  top: 0;
}

上面的 sn-p 将把 header 固定到顶部。然后只需在表的父容器中添加一个简单的溢出即可。您可以在下面找到一个简单的示例 -

.table-container {
  overflow: auto;
  max-height: 160px;
  border: 1px solid red;
}

th {
  position: sticky;
  top: 0;
  background: white;
}
<div class="table-container">
  <table>
    <thead>
      <tr>
        <th>Head 1</th>
        <th>Head 2</th>
        <th>Head 3</th>
        <th>Head 4</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td>Data</td>
        <td>Data</td>
        <td>Data</td>
        <td>Data</td>
      </tr>
      <tr>
        <td>Data</td>
        <td>Data</td>
        <td>Data</td>
        <td>Data</td>
      </tr>
      <tr>
        <td>Data</td>
        <td>Data</td>
        <td>Data</td>
        <td>Data</td>
      </tr>
      <tr>
        <td>Data</td>
        <td>Data</td>
        <td>Data</td>
        <td>Data</td>
      </tr>
      <tr>
        <td>Data</td>
        <td>Data</td>
        <td>Data</td>
        <td>Data</td>
      </tr>
      <tr>
        <td>Data</td>
        <td>Data</td>
        <td>Data</td>
        <td>Data</td>
      </tr>
      <tr>
        <td>Data</td>
        <td>Data</td>
        <td>Data</td>
        <td>Data</td>
      </tr>
      <tr>
        <td>Data</td>
        <td>Data</td>
        <td>Data</td>
        <td>Data</td>
      </tr>
      <tr>
        <td>Data</td>
        <td>Data</td>
        <td>Data</td>
        <td>Data</td>
      </tr>
      <tr>
        <td>Data</td>
        <td>Data</td>
        <td>Data</td>
        <td>Data</td>
      </tr>
      <tr>
        <td>Data</td>
        <td>Data</td>
        <td>Data</td>
        <td>Data</td>
      </tr>
      <tr>
        <td>Data</td>
        <td>Data</td>
        <td>Data</td>
        <td>Data</td>
      </tr>
      <tr>
        <td>Data</td>
        <td>Data</td>
        <td>Data</td>
        <td>Data</td>
      </tr>
    </tbody>
  </table>
</div>

【讨论】:

  • 它确实有效。我不这么认为是愚蠢的。除了上面的代码我只需要添加``` width: 100%;```
  • 这看起来比我试过的其他更好,但这并没有保留边界:(
  • 这里是@dbigpot,jsfiddle.net/0dzkvutp/2
猜你喜欢
  • 2016-10-11
  • 1970-01-01
  • 1970-01-01
  • 2016-08-29
  • 1970-01-01
  • 2011-02-07
  • 2013-09-02
  • 2019-08-15
  • 2015-01-05
相关资源
最近更新 更多