【发布时间】:2018-09-11 19:09:37
【问题描述】:
在使用 display: table/table-row/table-cell 编写一些 CSS 时,我遇到了一些我不理解的行为,但在 Chrome 和 Firefox 中是一致的。我将其简化为以下两个 sn-ps 突出差异:
样式规则很简单:
* { box-sizing: border-box; border: none; margin: 0; }
.stack, .flow {
width: 100%;
display: table;
}
.stack > * {
display: table-row;
}
.flow > * {
display: table-cell;
}
.w-100 { width: 100%; }
html 很粗糙:
<div class="flow">
<div>L</div>
<input type="text"class="w-100" placeholder="M" />
<div>R</div>
</div>
第二个链接的唯一区别是最后一个带有 R 的 div 被替换为
有趣的是,Edge 渲染它们的效果与我最初预期的完全一样。
编辑:如果您将 L 和 R 元素限制为固定大小,并且将整个行设置为 100%,则 M/中间单元格应扩展以适应整个宽度,但它不起作用预计在 Chrome 中。由于某些莫名其妙的原因,这两个 sn-ps 的呈现方式也不同:
似乎只有当所有用作表格单元的元素都是 div 时,渲染才能始终如一地工作,如下所示:https://codepen.io/anon/pen/mxKreZ
【问题讨论】:
-
考虑使用 flexbox 而不是表格。我 99% 确定它没有此类问题
标签: html css css-tables