【发布时间】:2010-09-10 13:11:56
【问题描述】:
我正在开发一个 Web 应用程序,我希望内容填满整个屏幕的高度。
该页面有一个标题,其中包含一个徽标和帐户信息。这可以是任意高度。我希望内容 div 将页面的其余部分填充到底部。
我有一个标题div 和一个内容div。目前我正在使用这样的布局表格:
CSS 和 HTML
#page {
height: 100%; width: 100%
}
#tdcontent {
height: 100%;
}
#content {
overflow: auto; /* or overflow: hidden; */
}
<table id="page">
<tr>
<td id="tdheader">
<div id="header">...</div>
</td>
</tr>
<tr>
<td id="tdcontent">
<div id="content">...</div>
</td>
</tr>
</table>
页面的整个高度被填满,不需要滚动。
对于内容 div 中的任何内容,设置 top: 0; 会将其放在标题下方。有时内容将是一个真实的表格,其高度设置为 100%。将header 放入content 将无法正常工作。
有没有办法不用table也能达到同样的效果?
更新:
内容div 中的元素也将高度设置为百分比。因此,div 中 100% 的内容会将其填充到底部。 50% 的两个元素也是如此。
更新 2:
例如,如果标题占据屏幕高度的 20%,则在 #content 内指定为 50% 的表格将占用 40% 的屏幕空间。到目前为止,将整个内容包装在一个表格中是唯一可行的方法。
【问题讨论】:
-
对于以后在这里磕磕绊绊的人,您可以在大多数浏览器中获得所需的表格布局,无需表格标记,通过使用
display:table和相关属性,请参阅this answer 非常类似的问题。 -
我已尝试重新创建您的设置 - jsfiddle.net/ceELs - 但它不起作用,我错过了什么?
-
@Mr.外星人的回答简单实用,看看http://stackoverflow.com/a/23323175/188784
-
其实你的描述是行不通的,即使是表格:如果内容占用的垂直空间大于屏幕高度,表格单元格和整个表格将扩展超出屏幕底部。您的内容溢出:自动不会出现滚动条。
-
@GillBates 它会在你指定父元素的高度后工作看jsfiddle.net/ceELs/5
标签: html css html-table