【发布时间】:2013-02-22 21:18:43
【问题描述】:
以下 HTML 在包括 IE7-9 在内的所有常见浏览器中完美呈现,但在 IE10 中失败。即使在兼容模式下运行 IE10 也会失败。
<html>
<body>
<table style="table-layout:fixed;width:500px">
<colgroup>
<col style="width:100px" ></col>
<col ></col>
<col style="width:100px" ></col>
<col ></col>
</colgroup>
<tbody>
<tr>
<td colspan="2">
<div style="background:red;"> red </div>
</td>
<td colspan="2">
<div style="background:green;"> green </div>
</td>
</tr>
</tbody>
</table>
</body>
</html>
虽然在所有其他浏览器中,两个单元格的大小相等,但在 IE10(至少在 Windows7 上运行时),第一个单元格比第二个单元格宽。
IE 9/Windows 7 中的 HTML:
IE 10/Windows 7 中的相同 HTML:
测试页:http://www.dinkypage.com/167605
有人知道这个问题的解决方案/解决方法吗?
更新:我要求微软重新打开我报告的错误,因为它违反了 w3c 标准。答案是:
“您报告的问题是设计使然。Internet Explorer 仅使用第一组 TD 标记来设置列的宽度。”。
w3c 标准 (http://www.w3.org/TR/CSS21/tables.html#fixed-table-layout) 说:
在固定表格布局算法中,每一列的宽度是这样确定的:
- “width”属性值不是“auto”的列元素设置该列的宽度。
- 否则,第一行中“width”属性值不是“auto”的单元格将确定该列的宽度。如果单元格跨越多于一列,则宽度将按列划分。
- 任何剩余的列均分剩余的水平表空间(减去边框或单元格间距)。
也就是说,这个功能在 IE 10 中被设计破坏了。我建议使用不同的浏览器或继续使用 IE 9...
【问题讨论】:
-
Windows 8 上的 IE 10 也存在同样的问题
-
问题也存在,如果所有
都有定义的宽度... -
Microsoft 自己声明如果使用 table-layout:fixed,则 colgroup 定义列的宽度 - 请参阅 msdn.microsoft.com/de-de/library/ie/ms531161(v=vs.85).aspx
-
Microsoft 不幸地将 Connect 中的大多数错误标记为“设计使然”,除非他们计划修复它们。他们认为(尽管这个概念失败了)正确地表明这个 [airquote] 有效[/airquote] “按照设计”,它们并不“看起来很糟糕”。可悲的是,这只是让开发人员觉得微软似乎丝毫没有解决这些问题的动机……但我离题了……
-
IE10 也有同样的问题。 table-layout:fixed 突然使我们所有的桌子都宽了一英里。我们过去常常在 th 标签上指定固定宽度,这在 IE10 之前都可以正常工作。
标签: html html-table internet-explorer-10