向表格添加水平和垂直滚动

Posted

技术标签:

【中文标题】向表格添加水平和垂直滚动【英文标题】:Adding horizontal and vertical scrolling to a table 【发布时间】:2017-06-19 19:01:24 【问题描述】:

我有一张桌子:

<div>
  <div className="shadow-z-1">
    <table className="table table-bordered table-hover">
      <thead>
        <tr>
          <th>ID</th>
          <th>First Name</th>
          <th>Last Name</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td>1</td>
          <td>John</td>
          <td>Doe</td>
        </tr>
        <tr>
          <td>2</td>
          <td>Jane</td>
          <td>Doe</td>
        </tr>
      </tbody>
    </table>
  </div>
  ...
</div>

我目前正在使用以下样式表对其进行样式设置:

.shadow-z-1 
  -webkit-box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.12), 0 1px 2px 0 rgba(0, 0, 0, 0.24);
  -moz-box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.12), 0 1px 2px 0 rgba(0, 0, 0, 0.24);
  box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.12), 0 1px 2px 0 rgba(0, 0, 0, 0.24);


.table 
  width: 100%;
  max-width: 100%;
  margin-top: 1rem;
  margin-bottom: 2rem;
  background-color: #fff;
  > 
    thead > tr, tbody > tr, tfoot > tr 
      -webkit-transition: all 0.3s ease;
      -o-transition: all 0.3s ease;
      transition: all 0.3s ease;
    
    thead > tr > th, tbody > tr > th, tfoot > tr > th, thead > tr > td, tbody > tr > td, tfoot > tr > td 
      text-align: left;
      padding: 1.6rem;
      vertical-align: top;
      border-top: 0;
      -webkit-transition: all 0.3s ease;
      -o-transition: all 0.3s ease;
      transition: all 0.3s ease;
    
    thead > tr > th 
      font-weight: 400;
      color: #757575;
      vertical-align: bottom;
      border-bottom: 1px solid rgba(0, 0, 0, 0.12);
    
    caption + thead > tr:first-child > th, colgroup + thead > tr:first-child > th, thead:first-child > tr:first-child > th, caption + thead > tr:first-child > td, colgroup + thead > tr:first-child > td, thead:first-child > tr:first-child > td 
      border-top: 0;
    
    tbody + tbody 
      border-top: 1px solid rgba(0, 0, 0, 0.12);
    
  
  .table 
    background-color: #fff;
  
  .no-border 
    border: 0;
  


.table-condensed > 
  thead > tr > th, tbody > tr > th, tfoot > tr > th, thead > tr > td, tbody > tr > td, tfoot > tr > td 
    padding: 0.8rem;
  


.table-bordered 
  border: 0;
  > 
    thead > tr > th, tbody > tr > th, tfoot > tr > th, thead > tr > td, tbody > tr > td, tfoot > tr > td 
      border: 0;
      border-bottom: 1px solid #e0e0e0;
    
    thead > tr > 
      th, td 
        border-bottom-width: 2px;
      
    
  


.table-striped > tbody > tr:nth-child(odd) > 
  td, th 
    background-color: #f5f5f5;
  


.table-hover > tbody > tr:hover > 
  td, th 
    background-color: rgba(0, 0, 0, 0.12);
  

这工作正常,但我现在要做的是在表格中添加垂直和水平滚动。对于垂直滚动,我想保持标题固定,所以我知道我需要给表格主体一个确定的高度,但我不知道我应该在我的样式表中做什么。对于水平滚动,我真的不知道从哪里开始。我希望能够保持所有列的宽度相同,这样如果添加另一个列,而不是被挤压到定义的区域,水平滚动条就会显示出来。

理想情况下,我希望仅使用 css(或在我的情况下为 SaSS)来实现这一目标。

对此的任何帮助将不胜感激!

感谢您的宝贵时间。

【问题讨论】:

【参考方案1】:

这是一个css代码:

.scroll-table-container 
border:2px solid green; 
height: 300px; 
overflow: scroll;

.scroll-table, td, th 
border-collapse:collapse; 
border:1px solid #777; 
min-width: 300px;

【讨论】:

【参考方案2】:

检查这个例子:

<html>
    <head>
        <style>
            divdisplay:inline-block;height:46px;overflow:scroll
            tablebackground:gray
            tdbackground:green
            td,thwidth:100px
            thbackground:orange
        </style>
    </head>
    <body>
        <table>
            <tr>
                <th>ID</th>
                <th>First Name</th>
                <th>Last Name</th>
            </tr>
        </table>
        <div>
            <table>
                <tr>
                    <td>1</td>
                    <td>John</td>
                    <td>Doe</td>
                </tr>
                <tr>
                    <td>2</td>
                    <td>Jane</td>
                    <td>Doe</td>
                </tr>
                <tr>
                    <td>3</td>
                    <td>Josh</td>
                    <td>Doe</td>
                </tr>
                <tr>
                    <td>4</td>
                    <td>Joana</td>
                    <td>Doe</td>
                </tr>
            </table>
        </div>
    </body>
</html>

【讨论】:

以上是关于向表格添加水平和垂直滚动的主要内容,如果未能解决你的问题,请参考以下文章

表格布局可以同时具有水平和垂直滚动视图吗

Bootstrap 中的水平和垂直可滚动表格

水平和垂直可滚动的大表格

html中表格水平和垂直滚动,表头垂直不动,可以水平滚动,大神们请问怎么实现啊?

在水平滚动表格中垂直溢出表格单元格

如何将滚动视图嵌入到表格视图中