如何指定表格的高度,以便显示垂直滚动条?

Mis*_*hko 98 css css-tables

我的页面上有很多行的表格.我想设置表的高度,例如500px,这样如果表的高度大于那个,就会出现一个垂直滚动条.我尝试使用CSS height属性table,但它不起作用.

Age*_*rum 164

尝试使用overflowCSS属性.还有单独的属性来定义仅水平溢出(overflow-x)和垂直溢出(overflow-y)的行为.

由于您只想要垂直滚动,请尝试以下方法:

table {
  height: 500px;
  overflow-y: scroll;
}
Run Code Online (Sandbox Code Playgroud)

编辑:

显然<table>元素不尊重overflow财产.这似乎是因为默认情况下<table>元素不会呈现display: block(它们实际上有自己的显示类型).您可以overflow通过将<table>元素设置为块类型来强制属性工作:

table {
  display: block;
  height: 500px;
  overflow-y: scroll;
}
Run Code Online (Sandbox Code Playgroud)

请注意,这将导致元素具有100%的宽度,因此如果您不希望它占据页面的整个水平宽度,则还需要为元素指定显式宽度.

  • 如果你要在tbody上使用它,请确保将display:block添加到thead(可能是tfoot)或者他们可能会有点疯狂.看来问题是,一旦你这样做,你就打破了thead和tbody之间的联系:前者的列不知道后者的宽度.所以你修补它,沿着你走的滑坡."我为美丽而死..." (7认同)
  • 不,它确实如此,你只需要在桌子上显示`display:block`,使其表现得像`div`一样http://jsfiddle.net/TSGSA/1/ (5认同)
  • 但这并不限制高度. (3认同)
  • 这个答案确实对我有帮助,但不应该将其应用于表标签,而应该应用于 tbody,以便允许标题在滚动时保持静态。然后,需要对滚动条上方标题区域的一些样式进行整理。 (3认同)
  • @Fred:伟大的思想相似.你评论时我更新了我的答案.:) (2认同)

Dar*_*con 57

您需要将表包装在另一个元素中并设置该元素的高度.内联css示例:

<div style="height: 500px; overflow: auto;">
 <table>
 </table>
</div>
Run Code Online (Sandbox Code Playgroud)

  • 此要求不在原始问题中. (19认同)
  • 当tbody滚动时,这将不允许将thead保持在原位. (8认同)
  • 此外,另一个(接受的)答案也没有保留thead. (2认同)

ene*_*ski 11

这些解决方案都不起作用。然而,我抓住了 Bootstrap 的 Flex 解决方案,它起作用了

table, td {
  border: 1px solid black;
}
th {
  border-left: 1px solid black;
}

table {
  border-collapse: collapse;
  width: 100%;
}

table {
    display: flex;
    flex-flow: column;
    width: 100%;
    height: 400px;
    
}

thead {
    padding-right: 13px;
    flex: 0 0 auto;
}

tbody {
    flex: 1 1 auto;
    display: block;
    overflow-y: auto;
    overflow-x: hidden;
}

tr {
    width: 100%;
    display: table;
    table-layout: fixed;
}
Run Code Online (Sandbox Code Playgroud)
<table>
<thead>
  <tr>
    <th>Firstname</th>
    <th>Lastname</th>
    <th>Savings</th>
  </tr>
  </thead>
  <tbody>
  <tr>
    <td>Peter</td>
    <td>Griffin</td>
    <td>$100</td>
  </tr>
  <tr>
    <td>Lois</td>
    <td>Griffin</td>
    <td>$150</td>
  </tr>
  <tr>
    <td>Joe</td>
    <td>Swanson</td>
    <td>$300</td>
  </tr>
  <tr>
    <td>Cleveland</td>
    <td>Brown</td>
    <td>$250</td>
  </tr>
    <tr>
    <td>Peter</td>
    <td>Griffin</td>
    <td>$100</td>
  </tr>
  <tr>
    <td>Lois</td>
    <td>Griffin</td>
    <td>$150</td>
  </tr>
  <tr>
    <td>Joe</td>
    <td>Swanson</td>
    <td>$300</td>
  </tr>
  <tr>
    <td>Cleveland</td>
    <td>Brown</td>
    <td>$250</td>
  </tr>
    <tr>
    <td>Peter</td>
    <td>Griffin</td>
    <td>$100</td>
  </tr>
  <tr>
    <td>Lois</td>
    <td>Griffin</td>
    <td>$150</td>
  </tr>
  <tr>
    <td>Joe</td>
    <td>Swanson</td>
    <td>$300</td>
  </tr>
  <tr>
    <td>Cleveland</td>
    <td>Brown</td>
    <td>$250</td>
  </tr>
    <tr>
    <td>Peter</td>
    <td>Griffin</td>
    <td>$100</td>
  </tr>
  <tr>
    <td>Lois</td>
    <td>Griffin</td>
    <td>$150</td>
  </tr>
  <tr>
    <td>Joe</td>
    <td>Swanson</td>
    <td>$300</td>
  </tr>
  <tr>
    <td>Cleveland</td>
    <td>Brown</td>
    <td>$250</td>
  </tr>
    <tr>
    <td>Peter</td>
    <td>Griffin</td>
    <td>$100</td>
  </tr>
  <tr>
    <td>Lois</td>
    <td>Griffin</td>
    <td>$150</td>
  </tr>
  <tr>
    <td>Joe</td>
    <td>Swanson</td>
    <td>$300</td>
  </tr>
  <tr>
    <td>Cleveland</td>
    <td>Brown</td>
    <td>$250</td>
  </tr>
    <tr>
    <td>Peter</td>
    <td>Griffin</td>
    <td>$100</td>
  </tr>
  <tr>
    <td>Lois</td>
    <td>Griffin</td>
    <td>$150</td>
  </tr>
  <tr>
    <td>Joe</td>
    <td>Swanson</td>
    <td>$300</td>
  </tr>
  <tr>
    <td>Cleveland</td>
    <td>Brown</td>
    <td>$250</td>
  </tr>
    <tr>
    <td>Peter</td>
    <td>Griffin</td>
    <td>$100</td>
  </tr>
  <tr>
    <td>Lois</td>
    <td>Griffin</td>
    <td>$150</td>
  </tr>
  <tr>
    <td>Joe</td>
    <td>Swanson</td>
    <td>$300</td>
  </tr>
  <tr>
    <td>Cleveland</td>
    <td>Brown</td>
    <td>$250</td>
  </tr>
  </tbody>
</table>
Run Code Online (Sandbox Code Playgroud)

  • 所有其他解决方案都会破坏桌子的宽度,但这个解决方案有效 (5认同)
  • 这是保留表格布局的唯一解决方案 - 应该是公认的答案 (2认同)