【发布时间】:2015-02-05 09:28:41
【问题描述】:
我正在使用具有固定表格布局的display:table 在网络应用程序中显示一些数据。
表格宽度设置为 100%。有两列,我明确设置第二列的宽度。根据spec,计算完列宽后,“如果表格比列宽,多余的空间应该分布在列上。”
但是,当第二列是 input 元素时,这似乎没有按预期工作。在这种情况下,第二列保留指定的宽度,第一列占表格的 50%。额外的空间不分布在列上,因此表格不会填满可用的宽度。
这是一个例子;第一个测试按预期工作,第二个没有:
.row {
display: table;
table-layout: fixed;
width: 100%;
}
.cell {
display: table-cell;
border: 1px solid #aaa;
}
.right {
width: 200px;
}
<p>Test 1 -- works as expected</p>
<div class="row">
<div class="cell">Label</div>
<div class="cell right">Field</div>
</div>
<p>Test 2 -- table does not fill available width</p>
<div class="row">
<div class="cell">Label</div>
<input class="cell right" type="text" value="Text input" />
</div>
我错过了什么吗?为什么会发生这种情况,我该如何解决?
【问题讨论】:
-
将表格用于表格数据,不要遵循完全忽略表格的规则,出于布局目的而不是表格数据而忽略它,您这样做是不正确的。
-
在我看来不像表格数据,但我可能是错的。也许是表格数据恰好是可编辑的,而不是像表格一样呈现的表格。
-
@BoltClock 仍然不正确,宁愿使用带有嵌套标签的 ul li 和输入标签都向左浮动并使用 clearfix 清除每个 li
-
@Mr.Alien 谢谢您的意见,但这并不能回答问题。
-
@Grodriguez 这实际上不是一个答案,而是一个建议:) 或者更好地说是标准