題の通りです。少なくとも Firefox 97.0.1 で題の問題が起きます。これは次のコードとデモで再現できます。
<table> <tbody> <tr> <td>a</td> <td>b</td> <td>c</td> </tr> <tr> <td>a</td> <td>b</td> <td>c</td> </tr> </tbody> </table>
table { border-collapse: collapse; } td{ border: solid 2px #ff00ff; background-color: #ffe9e9; position: relative; }
これを Firefox で見ると次のスクリーンショットの様になり、
Google Chrome や Microsoft Edge で見ると次のスクリーンショットの様になります。
とりあえず対処方法は次の様に CSS を追加するだけです。これでボーダーが復活します。
table { border-collapse: collapse; } td{ border: solid 2px #ff00ff; background-color: #ffe9e9; position: relative; /* ↓を追加 */ background-clip: padding-box; }
background-clip – CSS: カスケーディングスタイルシート | MDN
ボーダーが消える原因はbackground-color
とposition: relative;
の組み合わせにあります。リッチなテーブルセルの中で自在に要素を扱おうとするとこのボーダーの問題に引っかかります。こうなってしまう原理ですが、正直よくわかりません。ボーダーをそもそも描画していないのか、ボーダーを太さ0で描画してしまったのか、パディング領域を上から描画してしまったのか。
とりあえず background-clip という背景の切り取り範囲を指定する設定を
background-clip: padding-box;
とすることによって背景領域がボーダーの内側までしか伸びない様になり、対処が可能です。