83

我在容器中有一个基本表。该表将有大约 25 列。我正在尝试在表格溢出时添加一个水平滚动条,并且遇到了非常艰难的时期。

现在发生的情况是,表格单元格通过自动调整单元格的高度并保持固定的表格宽度来容纳单元格的内容。

我感谢任何关于为什么我的方法无法解决此问题的建议。

提前谢谢了!

CSS

.search-table-outter {margin-bottom:30px; }
.search-table{table-layout: fixed; margin:40px auto 0px auto;  overflow-x:scroll; }
.search-table, td, th{border-collapse:collapse; border:1px solid #777;}
th{padding:20px 7px; font-size:15px; color:#444; background:#66C2E0;}
td{padding:5px 10px; height:35px;}
tr:nth-child(even)  {background: #f5f5f5;}
tr:nth-child(odd)   {background: #FFF;}

HTML

<div class="search-table-outter wrapper">
    <table class="search-table inner">
        <tr>
            <th>Col1</th>
            <th>col2</th>
            <th>col3</th>
            <th>col4</th>
            <th>col5</th>
            <th>col5</th>
        </tr>
        <?php echo $rows; ?>
    </table>
</div>

JS fiddle(注意:如果可能的话,我希望水平滚动条位于带有红色边框的容器中):http: //jsfiddle.net/ZXnqM/3/

4

6 回答 6

139

我认为您overflow应该在外部容器上。您还可以显式设置列的最小宽度。像这样:

.search-table-outter { overflow-x: scroll; }
th, td { min-width: 200px; }

小提琴:http: //jsfiddle.net/5WsEt/

于 2013-11-05T16:50:48.283 回答
54

对于那些不能或不想将其包装table在 a 中div(例如,如果 HTML 是从 Markdown 生成的)但仍希望有滚动条的人的解决方案:

table {
  display: block;
  max-width: -moz-fit-content;
  max-width: fit-content;
  margin: 0 auto;
  overflow-x: auto;
  white-space: nowrap;
}
<table>
  <tr>
    <td>Especially on mobile, a table can easily become wider than the viewport.</td>
    <td>Using the right CSS, you can get scrollbars on the table without wrapping it.</td>
  </tr>
</table>

<table>
  <tr>
    <td>A centered table.</td>
  </tr>
</table>

解释:display: block;使滚动条成为可能。默认情况下(与表格不同),块跨越父元素的整个宽度。这可以通过 来防止max-width: fit-content;,它允许您使用 . 仍然水平居中内容较少的表格margin: 0 auto;white-space: nowrap;是可选的(但对这个演示很有用)。

于 2020-06-18T13:53:19.380 回答
11

没有人提到的解决方案是white-space: nowrap用于表格并添加overflow-x到包装器中。

( http://jsfiddle.net/xc7jLuyx/11/ )

CSS

.wrapper { overflow-x: auto; }
.wrapper table { white-space: nowrap; }

HTML

<div class="wrapper">
    <table></table>
</div>

如果您不想要包含多行的行,这是一个理想的方案。
要添加断线,您需要使用<br/>
.

于 2018-02-22T14:57:49.833 回答
7

除非我严重误解了您的问题,否则请移至overflow-x:scroll..search-table.search-table-outter

http://jsfiddle.net/ZXnqM/4/

.search-table-outter {border:2px solid red; overflow-x:scroll;}
.search-table{table-layout: fixed; margin:40px auto 0px auto;   }

据我所知,您不能为表格本身提供滚动条。

于 2013-11-05T16:49:15.927 回答
0
   .search-table-outter {border:2px solid red; overflow-x:scroll;}
   .search-table{table-layout: fixed; margin:40px auto 0px auto;   }
   .search-table, td, th{border-collapse:collapse; border:1px solid #777;}
   th{padding:20px 7px; font-size:15px; color:#444; background:#66C2E0;}
   td{padding:5px 10px; height:35px;}

您应该在 div 中提供滚动。

于 2016-11-13T08:57:48.527 回答
-4

在移动设备的响应式网站上,整个事情必须绝对定位在相对 div 上。并且固定高度。相关性的媒体查询集。

@media only screen and (max-width: 480px){
  .scroll-wrapper{
    position:absolute;
    overflow-x:scroll;
  }

于 2016-02-24T14:02:29.307 回答