包装长表格单元格,同时在其他单元格中保持动态宽度

时间:2010-12-31 04:15:40

标签: css html-table word-wrap column-width

我的桌子在其中一个单元格中有一条长行。我需要拆分长行,这样才不会导致表格超过100%。我发现通过添加table-layout: fixedword-wrap: word-break,它将包装长单元格。但是,使用table-layout的副作用是它会导致所有列具有相同的宽度。

你可以在这里看到一个例子:

http://jsfiddle.net/RYdLd/2/

如何使第一列的宽度自动尺寸仅适合其内容? (即在此示例中,它应足够宽,以显示该列中的12。)

表中的数据将动态加载,因此硬编码宽度值的解决方案并不好,因为无法预先知道列的宽度。我唯一的选择是使用<table>,我不能使用<div>或其他元素。

3 个答案:

答案 0 :(得分:3)

根据official specification,当您使用固定的table-layout时,第一行的列宽确定整个表的列宽。如果没有定义它们,它将均匀分配列宽。

由于似乎没有其他选择,我最终使用以下方法:

  1. table-layout设置为自动时将数据加载到表格中。
  2. 读取我想要动态的列的宽度。
  3. 将这些列宽设置为其当前值。
  4. table-layout更改为固定。
  5. 这是一个不完美的例子(宽度稍微减少):

    http://jsfiddle.net/RYdLd/7/

答案 1 :(得分:2)

我在解决同样的问题时发现了这一点:

在元素上设置break-word完全对应于在该元素内包含的文本的每个字符之间插入零宽度空格。

除了这实际上适用于普通的动态表格!

此解决方案非常快,因为它不需要任何Javascript。

(如果需要,它可以从Javascript中使用。查找所有包含break-word的单元格,获取所有子文本节点,并在每个字符之间插入零宽度空间。即使这样,脚本也只运行一次页面加载,所以这应该仍然非常高效。)

零宽度空间为&#8203;

答案 2 :(得分:-1)

您可以使用:自动换行css样式来打破长句。

word-wrap: break-word