CSSによるボーダー指定がないcollapseボーダーのテーブルでセル枠が表示されない

症状

CSSでボーダーのプロパティを指定せずにtable要素のborderプロパティだけで枠を設定しているテーブルに対して border-collapse: collapse; を指定すると、テーブル全体を囲む枠は表示されるがセルを囲む枠は表示されない。

例示

<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>
12
34

テーブルの枠はtable要素のborderプロパティで表示させています。

スクリーンショット

WinIE6WinIE6.0での表示(標準モード)

Op7Opera7.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>
12
34

または、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>
12
34

CSS2では、HTMLの特定の要素や属性など、CSS以外の手段による体裁指定は「相当するCSS規則に変換し、制作者CSSの先頭に追加する」と定められているので、table要素のborder属性(およびframe属性、rules属性)を無視するOperaの実装はバグと考えられます。

修正状況

  • Opera7.11標準モード、Opera7.11互換モードで不具合の発生を確認しました。
  • Opera6.06でこの不具合は発生しません。

関連記事

スポンサーリンク

<NOBR> 改行なしで表示する(NN独自の仕様)

ホームページ製作・web系アプリ系の製作案件募集中です。

上に戻る