【发布时间】:2015-07-20 13:16:48
【问题描述】:
我正在开发一个内容非常动态的网站,该网站需要重排并适应不断变化的内容。主要要求之一是有一个页眉和页脚(也有不同长度和高度的动态内容),并且它们之间的内容总是占据它们之间剩余的任何空间。
对于表格,这很简单:
<table>
<tr><td>Header</td></tr>
<tr class="content"><td>Content</td></tr>
<tr><td>Footer</td></tr>
</table>
table { height: 100%; }
tr.content { height: 100%; }
将这样的表格粘贴到任何容器中(包括视口,如果我们正在谈论顶级页面布局),就是这样,满足要求,完成工作。
但在我的一生中,我似乎无法找到使用 CSS 实现此目的的方法。我会认为,自从我第一次开始推动“整个 HTML 的东西”以来的 15 年多的时间里,像调整与其他事物相关的大小这样一个基本的事情到现在已经被提炼到近乎完美的程度,但它似乎并没有就这样吧。
我错过了什么吗?使用表格来布局页面感觉非常错误(当它到达内容的子表格时更是如此),但如果唯一的其他选择是 JavaScript,那么我宁愿回到 90 年代的 HTML。
这是一个说明我需要什么的 Codepen,通过上面显示的 HTML+CSS 实现:http://codepen.io/modo_lv/pen/PqBrRy?editors=110
【问题讨论】:
-
如果您知道页眉和页脚的高度,您始终可以使用
calc()作为中间框高度(又名#content { min-height: calc(100% - footerheight - headerheight);})。