IE不尊重td宽度

时间:2011-05-25 13:53:50

标签: html internet-explorer tablelayout

我有一个基于表格的布局,它分为四列,其中两列用于填充。在大多数浏览器中它工作正常,但至少在正常和兼容模式下的IE9上,单元格不是它们应该的大小。

我已经尝试将宽度定义为属性和CSS样式,但似乎都没有帮助。 See fiddle进行演示。

我想:

+------------------------------------------+
|  320          | 20 | 39   |  320         |
|               |    |      |              |
+------------------------------------------+

我得到:(四舍五入,值是小数)

+------------------------------------------+
|  324          | 19 | 34   |  321         |
|               |    |      |              |
+------------------------------------------+

使用实际内容而不是占位符内容,差异更加夸大,最左边的列为 357 ,最右边的 299 像素宽。

我最初只有两列填充边缘,但切换到当前版本作为尝试修复。它没有效果。

这是针对HTML简报的,因此无法使用无表格布局。

4 个答案:

答案 0 :(得分:3)

在过去,我发现这是一个几乎不可能解决的问题,除非你留下一个没有固定宽度的表格元素。

如果您这样做,那么我发现该列将是调整大小的列,而其余列应该按照您要求的大小。

这并不理想,但至少它是合理可预测和可控制的。

答案 1 :(得分:1)

有助于查看您的CSS和HTML。但是在测量桌子的总宽度时不要忘记边框计数。

margin + border + padding + width = real width。

另外,请确保其中一个单元格中没有任何元素大于单元格宽度。

答案 2 :(得分:1)

我终于找到了问题的解决方案。这四个单元格本身很好,但是包含简报标题和入口的代码打破了它:

<tr><td colspan="4">Some long text here</td></tr>

我将其更改为此并开始工作:

<tr><td colspan="4" width="700">Some long text here</td></tr>

宽列的宽度是700px,无论我是否强制它,但如果不这样做,单列单元格的宽度会搞砸。我认为这是IE中的一个明显错误。

答案 3 :(得分:0)

<table width="699" border="0" cellpadding="0" cellspacing="0">
  <tr>
    <td width="320" height="50" valign="top"><!--test-->&nbsp;</td>
    <td width="20" valign="top"><!--test-->&nbsp;</td>
    <td width="39" valign="top"><!--test-->&nbsp;</td>
    <td width="320" valign="top"><!--test-->&nbsp;</td>
  </tr>
</table>

这应该有效