【发布时间】:2013-11-10 03:50:04
【问题描述】:
我正在尝试用 div 元素填充表格的中心单元格。出于说明问题的目的,将 div 设置为红色背景。它似乎适用于 Chrome,但不适用于 IE。在下面的小提琴中,IE 将 div 的高度设置为包含其内容所需的最小高度。在用不同的 CSS 设置修补这个问题时,我设法让 IE 解释“高度:100%”;作为“浏览器窗口的高度”。但是,正如问题所述,我希望 IE 将其解释为 td 单元格的高度。有什么想法吗?
CSS:
*{
padding: 0px;
margin: 0px;
}
html, body{
height: 100%;
}
#container{
height:100%;
width: 100%;
border-collapse:collapse;
}
#centerCell{
border: 1px solid black;
}
#main{
height: 100%;
background-color: red;
}
HTML:
<table id="container">
<tr id="topRow" height="1px">
<td id="headerCell" colspan="3">
TOP
</td>
</tr>
<tr id="middleRow">
<td id="leftCell" width="1px">
LEFT
</td>
<td id="centerCell">
<div id="main">CENTER</div>
</td>
<td id="rightCell" width="1px">
RIGHT
</td>
</tr>
<tr id="bottomRow" height="1px">
<td id="footerCell" colspan="3">
BOTTOM
</td>
</tr>
</table>
【问题讨论】:
-
您是否使用表格来布置网页?
-
是的。昨天我花了一整天的时间试图发明/找到实现上述目标的 CSS 解决方案。我发现的最接近的是另一个 StackOverflow 问题的答案:stackoverflow.com/a/19110204/2897709 如您所见,它使用 CSS 表格显示属性,但是当您尝试让一些“单元格”跨越多个“列”时它会崩溃,因为显然没有与 colspan 属性类似的 CSS。
-
我发现或想到的其他 CSS 解决方案(a)需要指定页脚的高度,或者(b)当内容较短时不要将页脚保持在窗口底部高于窗口的高度,或 (c) 当内容高于窗口的高度时,页脚与内容重叠,或 (d) 要求浏览器渲染部分或全部 DOM,然后运行一些 javascript,然后重新渲染页面。表格布局是我发现的第一个没有任何这些问题的解决方案,至少在 Chrome 中是这样。不过,我似乎无法让它在 IE 中运行....
-
2018 年更新:看起来它现在可以在 Chrome、Firefox、IE11 和 Edge 中运行。 (Firefox 需要 @cloudpta 建议的
height: 100%;添加。)我猜在某些时候 IE 更改了它的算法以匹配其他算法。我还没有测试过旧版本的 IE,以确定更改发生的确切时间。
标签: html css internet-explorer