【发布时间】:2014-11-18 00:37:38
【问题描述】:
我有一个使用display: table-row 和table-cell 布局的表单,其中每一行包含两个单元格:一个标签和一个输入。两个单元格都有未指定的宽度,因为我希望它们与其中的内容一起拉伸。
但是,在特定单元格中,我需要添加一个包含额外信息的元素。无论其中的信息有多长,我都不希望它拉伸右侧的单元格。我只想让文本换行 好像 块设置了宽度,但没有设置宽度(因为我不知道它必须是什么)
.row {
display: table-row;
outline: 1px solid black;
}
.cell {
display: table-cell;
padding: 5px;
}
.info {
display: block;
}
<div class="row">
<div class="cell">Label</div>
<div class="cell input">
<input type="text" />
</div>
</div>
<div class="row">
<div class="cell">Another label</div>
<div class="cell input">
<input type="text" />
<span class="info">This text should not make the cell larger</span>
</div>
</div>
我知道相对较新的width: min-content 应该能够处理这个问题,它在inline blocks 上可以做到这一点,但这违背了使用table-cell 的目的,这是我在previous questionx 中发现的。 IE也不支持,我确实需要。
我尝试将.info 设置为inline 和inline-block 在新行上(都使用<br> 和带有display: block 的伪元素),所有这些都与word-break: break-word 结合使用,但徒劳无功。
奇怪的是,当我将max-width: 0 应用到.input div 页面呈现(使用开发人员工具)之后,单元格将缩小以适应输入,它会产生完全预期的效果.但是,预先设置这个值实际上会强制一个 0 宽度的单元格,并且所有的内容都会溢出。
我真的不想在使用 javascript 渲染后不得不设置这个值。有没有 CSS 方法可以做到这一点?
【问题讨论】:
-
为什么不用桌子?
-
@TylerH - 为什么会有帮助?
-
@LcSalazar 如果他下定决心要让它表现得像一个表格,那么实际上使用 HTML 表格将允许内置控件和表格行为,在使用 CSS 时你必须伪造。
-
这个:css table-cell equal width 看起来很有希望。
-
@TylerH - 首先,这里的问题不是让它表现得像一张桌子,它已经做到了。问题出在其他问题上……其次,不建议将 HTML 表格用于布局。
标签: html css tablelayout