次の 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 で実行している場合) では、最初のセルが 2 番目のセルよりも幅が広くなっています。
IE 9/Windows 7 のこの HTML:
IE 10/Windows 7 の同じ HTML:
テストページ: http://www.dinkypage.com/167605
この問題の解決策/回避策を知っている人はいますか?
更新: w3c 標準に違反しているため、報告されたバグを再度開くよう Microsoft に依頼しました。答えは次のとおりです。
「あなたが報告している問題は仕様によるものです。Internet Explorer は、列の幅を設定するために TD タグの最初のセットのみを使用します。」.
w3c 標準 ( http://www.w3.org/TR/CSS21/tables.html#fixed-table-layout ) は次のように述べています。
固定テーブル レイアウト アルゴリズムでは、各列の幅は次のように決定されます。
- 'width' プロパティの値が 'auto' 以外の列要素は、その列の幅を設定します。
- それ以外の場合、'width' プロパティの値が 'auto' 以外の最初の行のセルによって、その列の幅が決まります。セルが複数の列にまたがる場合、幅は列に分割されます。
- 残りの列は、残りの水平表スペースを均等に分割します (境界線またはセル間隔を差し引いたもの)。
つまり、この機能は IE 10 では設計上壊れています。別のブラウザーを使用するか、IE 9 を使用することをお勧めします...