这个 HTML 结构包含一个名为
div#page
的元素,当前页面的内容会通过 Ajax 加载到该元素中。内容始终由 section
标签组成,这些标签可以具有动态高度(相对于浏览器的百分比)或静态高度(以像素为单位)。
div#page
的高度应调整,以使 footer
立即跟随在最后一个 div#page > section
标签后面。
然而,为了能够为 div#page > section
标签设置百分比值,我将 div#page
的高度设为 100%。因此,它的 DOM 高度不会伸展。
如果将 footer
标签放在 div#page
中,这种方法也可以实现。但这对我来说不是一个好的解决方案,因为 footer 会被动态加载的页面内容覆盖。
是否有某种神奇的 CSS 解决方案可以正确地拉伸 div#page
?
body, html { margin: 0; padding: 0; }
#outer { background: red; position: absolute; width: 100%; height: 100%; }
#page { height: 100%; }
#page > section { background: #666; width: 100%; }
#page > section:nth-of-type(2n) { background: #333; }
#page > section:nth-of-type(1) { height: 100%; }
#page > section:nth-of-type(2) { height: 160px; }
#page > section:nth-of-type(3) { height: 220px; }
#page > section:nth-of-type(4) { height: 120px; }
footer { background: green; height: 160px; }
<div id="outer">
<!-- The current page content will be loaded into this div. -->
<div id="page">
<section>Full height.</section>
<section>Static height 1.</section>
<section>Static height 2.</section>
<section>Static height 3.</section>
</div>
<!-- The footer is static and therefore not inside of the #page div. -->
<footer>
Immediately after static height 3.
</footer>
</div>