我正在尝试创建一个包含三个 div 的页面:一个页眉、一个页脚和一个内容区域。这些应该占据屏幕的 100%。
页眉和页脚很小并且不会改变,内容区域可以是任意大小,所以我添加了 overflow:auto
使其在变得太大时滚动。
问题是,它溢出了屏幕的高度。我创建了一个小提琴来演示: https ://jsfiddle.net/tdxn1e7p/
我正在使用以下 CSS 设置 html 和 body 高度,因此容器上的 height:100%
技巧 将起作用:
html,
body {
height: 100%;
}
我的文件结构是:
<div style="height:100%;">
<div>
Header content
</div>
<div style="overflow:auto;">
Body content... this could be very long
</div>
<div>
Footer content
</div>
</div>
我发现了很多关于此类问题的变体,例如 这个问题,但无法使任何答案对我有用。
原文由 Michael 发布,翻译遵循 CC BY-SA 4.0 许可协议
方法 1 - flexbox
它适用于已知和未知的高度元素。确保将外部 div 设置为
height: 100%;
并重置默认值margin
onbody
。请参阅 浏览器支持表。jsFiddle
方法 2 - CSS 表格
对于已知和未知的高度元素。它也适用于包括 IE8 在内的旧版浏览器。
jsFiddle
方法 3 -
calc()
如果页眉和页脚是固定高度,你可以使用 CSS
calc()
。jsFiddle
方法 4 - 所有人的百分比
如果页眉和页脚的高度已知,并且它们也是百分比,那么您可以简单地计算一下使它们的高度达到 100%。
jsFiddle