<div>
我有一个相对定位并具有定义尺寸的外部。在其中,我有一个<table>
绝对定位的对象,带有top
, left
,right
并bottom
设置为零。我希望表格能够扩展以遵守顶部/左侧/右侧/底部约束,但是,这不是发生的情况。相反,表格尺寸是根据其内容计算的。
如果我使用 inner<div>
而不是 a <table>
,那么它会按预期工作。另一方面,如果我放在display: table;
inner <div>
,那么它的行为就像一张桌子。
我的问题是:为什么会这样?此行为在规范中的何处定义?或者它是浏览器中的错误(非常不可能)?
我检查了CSS 2.1 规范,阅读了第9.7 节“显示”、“位置”和“浮动”之间的关系、10.3.7 绝对定位、不可替换元素、17 个表格。我还检查了Mozilla Developer Network 中的 position CSS 属性。我也在 StackOverflow 中搜索过。而且,我仍然找不到表为什么会这样的解释。
查看现场演示: http: //jsfiddle.net/LgCDE/2/ 我可以在 Chrome 27 和 Firefox 20.0 上重现结果。
HTML:
<div class="box">
<table class="table">
<tr>
<td>Hey!</td>
</tr>
</table>
</div>
<div class="box">
<div class="table">Hey!</div>
</div>
<div class="box">
<div class="table" style="display: table;">Hey!</div>
</div>
CSS:
div.box {
position:relative;
border: 2px dashed red;
background: #800;
width: 100px;
height: 50px;
}
.table {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
width: auto;
height: auto;
margin: 0;
border: 3px double blue;
background: #CCF;
table-layout: fixed;
border-collapse: collapse;
}