Changing text wrapping behavior in HTML table
我有一个HTML表,其中一个特定的单元格可以包含长文本(最多一个段落)。有没有一种方法可以更改文本在该单元格中的换行方式,以便如果它足够长,可以水平拉伸表格,而可以换行并可以垂直拉伸表格?我希望该列的宽度由该列中的其余单元格动态确定,就像在该单元格中没有文本时一样。
澄清:我希望带有长文本的单元格的宽度完全由列中其他单元格的宽度确定,其中的文本换行以适合该宽度。我不想使用静态列宽或最大列宽,因为该页面是使用数据库中的数据动态生成的。
例:
1 2 3 4 | <table> <tr><td>Test Test Test</td></tr> <tr><td class="X">Test Test Test Test Test Test Test Test Test</td> </table> |
其中
默认行为是
1 2 3 4 5 | |--------------------------------------------| |Test Test Test Test | |--------------------------------------------| |Test Test Test Test Test Test Test Test Test| |--------------------------------------------| |
我希望它代替
1 2 3 4 5 6 7 | |-------------------| |Test Test Test Test| |-------------------| |Test Test Test Test| |Test Test Test Test| |Test | |-------------------| |
即使它小于屏幕的宽度。我想知道是否有可能在创建表格时不知道任何文本的宽度来执行此操作。
使用样式
我通过将宽度设置为我想强制自动换行的表格单元中的一个像素来解决此问题。
据我所知,除非您还使用
我不完全了解您的要求。您说您希望一个单元格根据其内容占用
如果是后一种情况,则必须使用固定宽度的表格。请看以下示例:
1 2 3 4 5 6 7 8 | <table style="width:250px;"> <tr> <td>Test</td> <td>Test Test Test Test Test Test Test Test Test</td> <td>TestTestTestTestTestTestTestTestTestTestTest</td> <td>Test Test Test Test Test Test Test Test Test</td> </tr> </table> |
请注意,由于中间的列,
1 | <table style="width:250px; table-layout:fixed"> |
现在,表格将为250px,但中间的列将溢出到下一个单元格中(我知道有点疯狂)。现在,我们可以使用
更新
因此,我认为CSS不可能做到这一点。问题是,您希望表格的宽度与除单元格
(注意,我已经在
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | <script type="text/javascript"> $(function() { var widths = $('table td').map(function() { return $("span", this).width(); }).get(); var biggest = Math.max.apply(Math, widths); $("table").width(biggest +"px"); }); <table> <tr><td><span>Test Test Test Test</span></td></tr> <tr><td class="X">Test Test Test Test Test Test Test Test Test</td> <tr><td><span>Test Test Test Test Test Test</span></td></tr> </table> |
使用
http://jsfiddle.net/yhFk9/