Answers:
这就是TD的方式。我相信这可能是因为TD元素的“显示”属性固有地设置为“表单元”而不是“块”。
在您的情况下,替代方法可能是将TD的内容包装在DIV中,然后对DIV应用宽度和溢出。
<td style="border: solid green 1px; width:200px;">
<div style="width:200px; overflow:hidden;">
This_is_a_terrible_example_of_thinking_outside_the_box.
</div>
</td>
可能需要处理一些填充或单元填充问题,最好删除内联样式并改用外部CSS,但这应该是一个开始。
将CSS table-layout:fixed;
(有时是width:<any px or %>
)应用于white-space: nowrap; overflow: hidden;
TD上的TABLE和样式。然后在正确的单元格或列元素上设置CSS宽度。
重要的是,固定布局表的列宽由表第一行中的单元格宽度确定。如果第一行中有TH元素,并且宽度应用于TD(而不是TH),则宽度仅应用于TD的内容(可以忽略空白和溢出);不论设置的TD宽度如何,表列将平均分配(因为未指定[第一行TH上的宽度]),并且列具有[计算的]相等的宽度;该表格将不会根据后续行中的TD宽度重新计算列宽。设置表格将遇到的第一个单元格元素的宽度。
或者,最安全的设置列宽的方法是在表中使用<COLGROUP>
和<COL>
标签,并在每个固定宽度COL上设置CSS宽度。当表格提前知道列宽时,与单元格宽度相关的CSS表现更好。
好了,这是为您提供的解决方案,但我真的不明白为什么会这样:
<html><body>
<div style="width: 200px; border: 1px solid red;">Test</div>
<div style="width: 200px; border: 1px solid blue; overflow: hidden; height: 1.5em;">My hovercraft is full of eels. These pretzels are making me thirsty.</div>
<div style="width: 200px; border: 1px solid yellow; overflow: hidden; height: 1.5em;">
This_is_a_terrible_example_of_thinking_outside_the_box.
</div>
<table style="border: 2px solid black; border-collapse: collapse; width: 200px;"><tr>
<td style="width:200px; border: 1px solid green; overflow: hidden; height: 1.5em;"><div style="width: 200px; border: 1px solid yellow; overflow: hidden;">
This_is_a_terrible_example_of_thinking_outside_the_box.
</div></td>
</tr></table>
</body></html>
即,将单元格内容包装在div中。
最好的解决方案是将div放入宽度为零的表格单元格中。Tbody表单元格将从主题定义的宽度继承其宽度。位置:相对保证金和负保证金应该做的!
这是屏幕截图:https : //flic.kr/p/nvRs4j
<body>
<!-- SOME CSS -->
<style>
.cropped-table-cells,
.cropped-table-cells tr td {
margin:0px;
padding:0px;
border-collapse:collapse;
}
.cropped-table-cells tr td {
border:1px solid lightgray;
padding:3px 5px 3px 5px;
}
.no-overflow {
display:inline-block;
white-space:nowrap;
position:relative; /* must be relative */
width:100%; /* fit to table cell width */
margin-right:-1000px; /* technically this is a less than zero width object */
overflow:hidden;
}
</style>
<!-- CROPPED TABLE BODIES -->
<table class="cropped-table-cells">
<thead>
<tr>
<td style="width:100px;" width="100"><span>ORDER<span></td>
<td style="width:100px;" width="100"><span>NAME<span></td>
<td style="width:200px;" width="200"><span>EMAIL</span></td>
</tr>
</thead>
<tbody>
<tr>
<td><span class="no-overflow">123</span></td>
<td><span class="no-overflow">Lorem ipsum dolor sit amet, consectetur adipisicing elit</span></td>
<td><span class="no-overflow">sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</span></td>
</tbody>
</table>
</body>
您必须设置表格的样式属性:width
和table-layout: fixed;
让“溢出:隐藏;” 属性正常工作。
Imo比使用div和 width
style属性的,尤其是在将其用于动态调整大小计算时,该表将具有更简单的DOM,这使得操作更加容易,因为不需要对填充和边距进行校正
另外,您不必为所有单元格设置宽度,而只需为第一行中的单元格设置宽度。
像这样:
<table style="width:0px;table-layout:fixed">
<tr>
<td style="width:60px;">
Id
</td>
<td style="width:100px;">
Name
</td>
<td style="width:160px;overflow:hidden">
VeryLongTextWhichShouldBeKindOfTruncated
</td>
</tr>
<tr>
<td style="">
Id
</td>
<td style="">
Name
</td>
<td style="overflow:hidden">
VeryLongTextWhichShouldBeKindOfTruncated
</td>
</tr>
</table>
为了更简单,我建议在td内放一个textarea是自动管理的
<td><textarea autofocus>$post_title</textarea></td>
需要改善
<style>
.col {display:table-cell;max-width:50px;width:50px;overflow:hidden;white-space: nowrap;}
</style>
<table>
<tr>
<td class="col">123456789123456789</td>
</tr>
</table>
显示123456
vertical-align:middle
,甚至将其添加到DIV中也无法解决问题。