以下 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>
虽然在所有其他浏览器中,2 个单元格的大小相同,但在 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...