【发布时间】:2012-09-18 17:02:16
【问题描述】:
我有一个基于用户输入动态构建的表——即用户在表中输入数据,并确定一行中有多少个字段等。因此,我无法控制长度数据和有限的布局控制。我仍然设法构建了在 FF、Chrome、Safari 中运行良好的东西,但我在 IE8 和 IE9 中遇到了一个烦人的问题。我为有问题的表格单元格包含以下 css:
td.dc {
white-space:normal;
-ms-word-wrap: break-word;
max-width: 80em;
}
IE 会忽略所有 3 个标签,并在整个行中继续。如果我将单元格的内容包装在 div 中并将 css 应用于 div,它在 IE9 中有效,但在 IE8 中仍然无效。在 IE8 中,文本实际上在 80 em 之后换行,但单元格仍被渲染得足够宽以适应展开的行,因此表格中的其他所有内容都被推过。有没有办法解决?
[编辑] 我创建了一个 jsfiddle 来说明正在破坏的特定情况:http://jsfiddle.net/qz3rv/3/ 我已经意识到(从错误报告中并不清楚)是只有某些情况似乎被破坏了——也许与/ 在数据中。
【问题讨论】:
-
不要使用
-ms-word-wrap,除非您特别想针对 IE 8+。使用不带前缀的word-wrap。 -
也看看this question。你可能想使用
table { table‑layout: fixed; width: 30em; }之类的东西。 -
我专门针对 IE8+,这就是我使用前缀的原因。 white-space:normal 在其他浏览器中表现我想要的方式。不幸的是,我不能使用 table-layout:fixed 因为布局是由用户决定的:他们选择在同一行中包含多少个字段,并且他们决定了字段的内容(以及长度)。
-
我使用前缀是因为我只希望它适用于 IE。我真的不想打断单词——在某些情况下,就像我在 jsfiddle 中说明的那样,我只是无法让它在单词之间打断。我不能使用 table-layout:fixed 因为用户决定了列的大小和数量。
标签: css internet-explorer css-tables