CSSでボーダーのプロパティを指定せずにtable要素のborderプロパティだけで枠を設定しているテーブルに対して border-collapse: collapse; を指定すると、テーブル全体を囲む枠は表示されるがセルを囲む枠は表示されない。
- Category: Opera, Windows, ver.9 Under
- Tag: border, table
例示
<table border="2" style="border-collapse:collapse; background:lime;">
<tr>
<td>1</td>
<td>2</td>
</tr>
<tr>
<td>3</td>
<td>4</td>
</tr>
</table>
| 1 | 2 |
| 3 | 4 |
テーブルの枠はtable要素のborderプロパティで表示させています。
スクリーンショット
WinIE6.0での表示(標準モード)
Opera7.11での表示(標準モード)
補足
CSSを用いて、テーブルセル要素に対してボーダーを設定することでこのバグを回避できます。
<style type="text/css">
<!--
table.sample {
border-collapse: collapse;
border: 2px outset gray;
}
table.sample th, table.sample td {
border: 1px inset gray;
}
-->
</style>
<table border="2" class="sample">
<tr>
<td>1</td>
<td>2</td>
</tr>
<tr>
<td>3</td>
<td>4</td>
</tr>
</table>
| 1 | 2 |
| 3 | 4 |
または、table要素開始タグで rules="all" を明示することでも回避できます。
<table border="2" style="border-collapse:collapse;" rules="all">
<tr>
<td>1</td>
<td>2</td>
</tr>
<tr>
<td>3</td>
<td>4</td>
</tr>
</table>
| 1 | 2 |
| 3 | 4 |
CSS2では、HTMLの特定の要素や属性など、CSS以外の手段による体裁指定は「相当するCSS規則に変換し、制作者CSSの先頭に追加する」と定められているので、table要素のborder属性(およびframe属性、rules属性)を無視するOperaの実装はバグと考えられます。
修正状況
- Opera7.11標準モード、Opera7.11互換モードで不具合の発生を確認しました。
- Opera6.06でこの不具合は発生しません。


