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


100

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


1
也许使用max-height而不是那样,height因为后者将迫使桌子的高度为500px
Fred

1
您可能要问第二个问题,以防止标题行滚动。;)
Bill Bingham 2010年

Answers:


173

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

由于只需要垂直滚动,请尝试以下操作:

table {
  height: 500px;
  overflow-y: scroll;
}

编辑:

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

table {
  display: block;
  height: 500px;
  overflow-y: scroll;
}

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


3
但是,这并不限制高度。
Fred

6
不,确实如此,您只需要display:block在桌子上使其表现得像div jsfiddle.net/TSGSA/1
弗雷德(Fred)

2
@弗雷德:伟大的思想都一样。您发表评论时,我更新了答案。:)
AgentConundrum 2010年

1
这个答案确实对我有帮助,但是应该将其应用于tbody,而不是将其应用于table标记,以使滚动时标头保持静态。然后,可以对剧院上方滚动条上方的区域进行一些样式设置。
大卫

7
如果要在机身上使用此功能,请确保将display:block添加到thead(可能还有tfoot)上,否则它们可能会发疯。看来问题是一旦执行此操作,您就破坏了thead和tbody之间的链接:前者的列不知道后者的宽度。因此,您可以沿着湿滑的斜坡打补丁并走下去。“我为美丽而死...”
Cuse70

59

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

<div style="height: 500px; overflow: auto;">
 <table>
 </table>
</div>

9
这不允许在tbody滚动时将theat保持在适当的位置。
大卫,

21
此要求不在原始问题中。
黑暗猎鹰队2012年

2
另外,另一个(可接受的)答案也不会使主题保持不变。
布罗克·亚当斯

您仍然可以使用此方法使标题看起来合适。您隐藏表的标题,然后在其中包含标题的第一个表上方创建第二个表。然后,设置两个表的样式以使其具有display:table;display:table-row;和单元格,display:table-cell;两个表将匹配并显示为一个。(注意:这不适用于非常大的表;基本上,它会
尽可能地

1
当然。必须指定父级的大小以使用相对大小。例如:jsfiddle.net/hz8wy
Dark Falcon

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.