Dan*_*ams 5 html css html-table ellipsis
我想省略第二列中的文本,而不对两列中的任何一列硬编码宽度。在只有父元素(表格)具有固定宽度的情况下,这可能吗?
table {
width: 100px;
border: 1px solid green;
}
.td1 {
border: 1px solid blue;
}
.td2 {
border: 1px solid red;
}
.td div {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}Run Code Online (Sandbox Code Playgroud)
<table>
<tr>
<td class="td1">Label:</td>
<td class="td2"><div>thequickbrownfoxjumpsoverthelazydog</div></td>
</tr>
</table>Run Code Online (Sandbox Code Playgroud)
您可以在嵌套表格中执行此操作,我使用 CSS 表格作为示例,并在表格布局的 div 中添加了一个 span 标签。
table {
width: 200px;
border: 1px solid green;
}
.td1 {
border: 1px solid blue;
}
.td2 {
border: 1px solid red;
}
.td2 div {
display: table;
table-layout: fixed;
width: 100%;
}
.td2 span {
display: table-cell;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}Run Code Online (Sandbox Code Playgroud)
<table>
<tr>
<td class="td1">Label:</td>
<td class="td2">
<div><span>thequickbrownfoxjumpsoverthelazydog</span></div>
</td>
</tr>
</table>Run Code Online (Sandbox Code Playgroud)
你需要table-layout: fixed;
更多信息 - https://developer.mozilla.org/en-US/docs/Web/CSS/table-layout
省略号部分的 CSS 没问题,但默认情况下,表格会根据内容宽度计算其宽度,因此表格单元格将与内容一样宽,并且文本永远不会折叠。table-layout: fixed;改变了这一点。这意味着表格将在插入内容之前计算单元格的尺寸,然后内容在渲染时不会影响表格的尺寸。
代价是您的表将不再自动平衡列:
table {
width: 100px;
border: 1px solid green;
table-layout: fixed;
}
.td1 {
border: 1px solid blue;
}
.td2 {
border: 1px solid red;
}
td div {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}Run Code Online (Sandbox Code Playgroud)
<table>
<tr>
<td class="td1">Label:</td>
<td class="td2"><div>thequickbrownfoxjumpsoverthelazydog</div></td>
</tr>
</table>Run Code Online (Sandbox Code Playgroud)