我基本上需要实现的是让一个元素(div、span、table 等)消耗其父高度的 100% 并在其内容更高时显示滚动。
问题是,只有 chrome 和 IE in quirks 可以正常工作height:100%; overflow: auto;
。标准中的 Firefox、Opera 和 IE(任何 IE 7+,任何“标准”)只是忽略溢出并将 html 元素拉伸到父大小以下。如果我设置了固定高度,它可以工作,但在渲染之前我无法确定可用高度,有多个可能的值。
简化示例(为此使用 jsFiddle):
<body>
<div id="parent">
<table id='container'>
<tr>
<td>
<div id='element-in-question'>
<!--Content long enough to stretch the div-->
</div>
</td>
</tr>
<tr>
<td id='footer-cell'>
<div id='footer'>I'm footer<div>
</td>
</tr>
</table>
</div>
</body>
CSS:
#parent { height:500px; width:500px; position:absolute; }
#container { height: 100%; width:100%; }
#element-in-question { height:100%; width:100%; overflow: auto; }
#footer-cell { height:30px;}
#footer { height: 30px; }
在真正的应用程序中,所有这些东西都在 iframe 中运行,表格用于渲染页眉和页脚等。请不要建议停止使用表格,它是具有 100 多个需要注意的地方的遗留应用程序。只有 CSS 的解决方案是理想的。
还有一点:它应该在 Chrome、IE10 标准模式下工作。不支持FF、Opera和Safari,IE9及以下处理方式不同。
更新:大约有十个不同高度的页脚,理想情况下,解决方案不应依赖于固定的页脚高度。