【发布时间】:2019-06-21 11:53:48
【问题描述】:
我有一个场景需要在表头 <th> 元素中进行复杂布局。我想通过使<th> 元素成为弹性容器来解决这个问题。
但是,如果我从这个最小的例子开始
并将<th>元素更改为display: inline-flex,表格变为:
即,标题的列宽不再与<td> 元素的列宽匹配。
如何在不影响列渲染的情况下在标题中使用 flexbox?
编辑以阐明用例:我的<th> 元素最终将包含多个元素,左+右对齐(类似于this question)。此外,我希望能够控制拉伸行为(这就是为什么 flexbox 而不仅仅是浮动)。
例如jsfiddle:
<table>
<thead>
<tr>
<th class="column-header">A</th>
<th class="column-header">B</th>
<th class="column-header">C</th>
</tr>
</thead>
<tbody>
<tr>
<td>Something</td>
<td>Something</td>
<td>Something</td>
</tr>
</tbody>
</table>
table, th, td {
border: 1px solid #000;
}
.column-header {
display: inline-flex;
}
【问题讨论】:
-
你能在
th中使用一个包含display: flex的包装元素吗? -
@insertusernamehere 我宁愿避免使用包装器,但如果这是唯一的解决方案,那也很好。
-
这是您要找的吗? - jsfiddle.net/mjyzs4o2 - 我也不确定为什么要在表格中使用 display flex,因为使用 div 会更好
-
@Andrew 不,这不是我要找的。我不想让
<tr>成为弹性,而是让<th>。在我的用例中,我需要对齐每个<th>中的各种内容、多个左对齐的文本元素、右对齐的符号,其中一些应该拉伸等等。 -
@bluenote10 你可以把你的
<td>也写成display:inline-flex然后添加一个min-witdh