【发布时间】:2015-07-29 23:11:38
【问题描述】:
我想要一个表格,其左侧有标题,标题应尽可能窄,并且值的空间应占据页面宽度的其余部分。标题应该都在一行,除非标题单元格的内容很长,此时标题应该换成多行。
对于简短的内容,这是可行的:
<table border="1">
<tr>
<th>Short Header</th>
<td>value</td>
</tr>
<tr>
<th>Quite Long Header</th>
<td>value</td>
</tr>
</table>
CSS:
table {
width: 100%;
}
th {
text-align: right;
width: 10px;
white-space: nowrap;
}
但是,当我尝试添加最大宽度而不是换行时,内容会溢出文本框:
table {
width: 100%;
}
th {
text-align: right;
width: 10px;
white-space: nowrap;
max-width: 300px;
word-break: break-all;
}
演示:https://jsfiddle.net/2avm4a6n/
似乎white-space: nowrap; 样式覆盖了word-break: break-all;,因此max-width: 300px; 导致文本溢出。我正在使用white-space: nowrap; 和width: 10px; 组合使标题列尽可能窄,而不用低于最小宽度的空格包装标题,但只有width: 10px; 和word-break: break-all; 导致标题换行成单个字符以适应狭窄的 10 像素。
知道如何用 css 做到这一点吗?
【问题讨论】:
-
它还必须保持
display: table吗?或者它可以与它的外观有所不同(当然还有边框等) -
@chrona:我有很多行,我希望右侧列中的所有元素仍然水平左对齐,而不管左侧列中的内容如何,如果不使用表格也可以的话。