【发布时间】:2019-02-06 14:50:35
【问题描述】:
我正在使用 flexbox 在窄列中显示文本标签和数值,这样如果文本不合适,就会用省略号截断。
它工作得很好,直到我需要将整个列放在一个表格单元格中 - 此时浏览器 (Chrome) 只是忽略了列宽并使表格足够宽以容纳所有文本。
这是标签布局:
<div class="line">
<span>Very long label text</span>
<span>12345</span>
</div>
.line {
display: flex;
width: 100%;
}
.line span:first-child {
white-space: nowrap;
flex-grow: 1;
overflow: hidden;
text-overflow: ellipsis;
}
.line span:last-child {
flex-shrink: 0;
margin-left: 5px;
}
将其放置在具有固定宽度的常规 div 中可以按预期工作。将其放在表格单元格中不会:
小提琴:http://jsfiddle.net/98o7m7am/
.wrapper {
width: 150px;
}
.table {
display: table;
}
.table > div {
display: table-cell;
}
.line {
display: flex;
width: 100%;
}
.line span:first-child {
white-space: nowrap;
flex-grow: 1;
overflow: hidden;
text-overflow: ellipsis;
}
.line span:last-child {
flex-shrink: 0;
margin-left: 5px;
}
<div class="wrapper">
<div class="line">
<span>Very long label text</span>
<span>12345</span>
</div>
</div>
<div class="table wrapper">
<div>
<div class="line">
<span>Very long label text</span>
<span>12345</span>
</div>
</div>
</div>
更新:我最终通过使用更多 flexbox 而不是表格来“解决”这个问题,但我仍然想知道为什么原始示例不起作用。
【问题讨论】: