我想在左侧有一个带有 Headers 的表格, Headers 应该尽可能地窄,并且值的空间应该占据页面宽度的其余部分 . Headers 应该都在一行上,除非 Headers 单元格的内容很长,此时 Headers 应该包裹在多行上 .
内容短,这有效:
<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;
组合使 Headers 列尽可能窄,而不包含空格低于最小宽度的 Headers ,但只有 width: 10px;
和 word-break: break-all;
会导致 Headers 包装成单个字符以适应缩小10px .
知道怎么用css做这个吗?
6 回答
从
th
删除table
width
删除width
,white-space
和word-break
. 添加到th
word-wrap: word-break
我还建议你设置
min-width: 150px
或你想要的任何值 . 另外添加td { width: 100%;}
.这是jsFiddle
如果您正在寻找,请告诉我:
删除
white-space:nowrap
和word-break:break-all
并添加word-wrap:break-word请参阅下面的代码段:
UPDATE: OP评论 -
may 18th
添加
min-width
以适合您的th
. (注意th
会破坏单词不会收到min-width
)正如@ Pangloss在另一个答案的评论中指出的那样 .请参阅下面的代码段:
如果您已经知道
<th>
中的数据是什么,则可以将长文本包装成<span>
标签,然后稍微调整CSS .更新了JSFIDDLE
CSS3 grid layout怎么样:
要查看此操作,您必须使用Chrome,转到
chrome://flags
并启用 Enable experimental Web Platform features 选项 .显然目前这并没有多大用处,但肯定会有所期待!
@Douglas :我认为你做得很好 . 但正如在你给出的例子和问题中你说你想要窄 Headers 所以你给了10px宽度到 th . 但如果你想在你的例子中获得10px宽度,那么只删除 white-space: nowrap;
然后就像 Example 1 一样 .
Example 1: https://jsfiddle.net/2avm4a6n/20/
Example 2: 由于所有用户都给出了答案,您也可以这样做
Example 3: 如果您想使用 white-space: nowrap; 然后再申请一件事,还有另一种选择,例如 text-overflow: ellipsis; overflow: hidden; https://jsfiddle.net/2avm4a6n/21/
文本溢出:省略号;
溢出:隐藏;
EDIT
并使用text-align:left;如果你想从左侧开始文字
您可以通过给“th”增加宽度并使text-align:left来实现这一点
HTML
CSS
工作小提琴:https://jsfiddle.net/2avm4a6n/16/