【发布时间】:2018-03-15 11:38:44
【问题描述】:
这是我的代码:
<style type="text/css">
div {
width: 250px;
}
table {
white-space: nowrap;
}
th {
max-width: 175px;
overflow: hidden;
text-overflow: ellipsis;
}
th:hover {
overflow: visible;
position: relative;
}
th:hover span {
background-color: white;
}
td {
width: 100%;
}
</style>
<div>
<table border="1">
<tr>
<th><span>Short Header</span></th>
<td>value</td>
</tr>
<tr>
<th><span>Quite Long Header</span></th>
<td>value</td>
</tr>
<tr>
<th><span>MMMMMMMMMMMMMMMMMMMMMMMMMMMassiveHeader</span></th>
<td>value</td>
</tr>
</table>
</div>
这里有一个关于 JSFiddle 的例子:https://jsfiddle.net/3ptc3fL5/
请注意表格最后一行中的第一列是如何因太宽而无法容纳的,因此它会以省略号溢出。但是,如果您将鼠标悬停在它上面,它会展开以显示整个值。
但是,如果我摆脱 th 的 max-width 风格,一切都会崩溃。该表不再适合父 div。这是一个问题,因为我想在不必预先指定宽度的情况下达到同样的效果。
我的原因是我想创建一个通用实用程序类,我可以在不同响应页面的不同表格中使用。在一般情况下,我不知道父 div 的宽度(尤其是在响应式页面上),我不知道表格中其他列的宽度,我不想通过和在每种情况下手动计算出来,并在每次更改时保持最新。
我只希望除第一个列之外的所有列尽可能缩小而不会溢出,并且第一个列尽可能地扩展同时将表保持在父 div 内同时隐藏其内容的任何溢出都以省略号结尾。
我知道这里有大约 5000 个类似的问题,但在这一点上,我想我已经浏览了所有这些问题,但仍然没有找到任何可行的方法。 This is pretty close,但不考虑包装 div 的大小。有什么想法吗?
【问题讨论】:
-
可能是错的,但我怀疑在某处不指定宽度的情况下是否有可能。您是否在标题上尝试过
max-width: 20ch;?第二列是否比value更长? -
第二列可以比
value长或短。也可以有 2 列以上。 -
为了清楚起见......当有超过 2 列时,我希望额外的列都像
value列一样处理(尽可能收缩而不溢出,然后让第一列尽可能扩大,但隐藏其溢出)。 -
我刚刚在下面编辑了我的答案,请检查一下,希望对您有所帮助。