我们的应用程序大量使用表格进行布局和定位,并且过去仅是 IE(怪癖模式)。展望未来,我们正试图摆脱怪癖模式,并用 div 和更语义化的布局替换表格。
阻止我们的一件事是怪癖模式“功能”,它允许我们height=100%
在表格行上进行设置,并让该行占据剩余的垂直空间。到目前为止,我们还没有找到一种在怪癖模式之外执行此操作的方法,无论是否使用表格。
这是我们在页面正文中使用的代码。这里没有显示样式,但效果还是一样的:
<table width="100%" height="100%" border="0">
<tr>
<td>
<table width="100%" height="100%" border="1">
<tr>
<th>This is my header bar</th>
</tr>
</table>
</td>
</tr>
<tr height="100%">
<td>
<table width="100%" height="100%" border="1">
<tr>
<td>This is my main section bar</td>
</tr>
</table>
</td>
</tr>
<tr>
<td>
<table width="100%" height="100%" border="1">
<tr>
<td>This is my footer bar</th>
</tr>
</table>
</td>
</tr>
这就是 Quirks 模式下的样子。请注意,中间行(带有height="100%"
)已扩展以占用剩余的垂直空间:
标准模式呈现相同的代码,如下所示:
jsFiddle 与代码: http: //jsfiddle.net/RBeWN/3/(请注意,由于 iFrames 等,代码实际上不会在 jsFiddle 上以怪异模式呈现,但您可以使用开发工具强制它)。
我试图用div
s 和一些 css 来做到这一点,但它不起作用:http: //jsfiddle.net/BVMhR/3/。将主 div 设置为height: 100%;
与其父级相同的高度,而不是使其占用剩余空间。设置box-sizing: border-box;
对此也没有任何影响。
有人可以帮我找到解决这个问题的方法吗?如果可能的话,我希望能够在没有 javascript 的情况下做到这一点,但如果需要 Javascript ,它必须是一个可以在每个页面上运行的通用解决方案,这样设置它就不会产生太多的开发开销向上。