現象
例えば、
table {
border-collapse: collapse;
border-spacing: 0;
}
td {
border: 1px dashed #333;
}
cssにこのようなコードを書いて表示させると、テーブル全体に破線の枠が追加されるはずです。
しかし、Firefoxで表示すると……
![Firefoxでtableの表示を行うと、border-collapse指定した内側のborderだけずれる](https://labor.ewigleere.net/wp-content/uploads/2020/06/table_on_firefox-20200603_reproduction_1.jpg)
……何故かFirefoxだけ、上述のような表示になります。
間のborder-collapse
が関係するborder: dashed
で、ブラウザがborder
の上下や左右が重なる部分を調整して表示している部分。重なりを削除して残ったものだけが表示されているように、ほんの少しだけ。
![Firefoxでtableの表示を行うと、border-collapse指定した内側のborderだけずれる(拡大)](https://labor.ewigleere.net/wp-content/uploads/2020/06/table_on_firefox-20200603_reproduction_2.jpg)
やや拡大。やはりずれているように見えます。
調査・対処
検索するとborder-collapse: collapse;
ではなくborder-collapse: separate;
にすると良い、という記事もありましたが、今回はborder
自体が消えることもあったのであまり汎用的ではなさそう。
最終的に以下のように力業になりました。
table {
border-collapse: separate;
border-spacing: 0;
}
td {
border-top: 1px dashed #333;
border-left: 1px dashed #333;
}
tr:last-of-type td {
border-bottom: 1px dashed #333;
}
td:last-of-type {
border-right: 1px dashed #333;
}
border-collapse: separate;
しつつ、border
で全体指定ではなく、重なりをそもそも生じさせないようにborder-top
やborder-left
などで最低限で済むように調整しました。
![fixedしたtablのborder(Firefox表示)](https://labor.ewigleere.net/wp-content/uploads/2020/06/table_on_firefox-20200603_fixed.jpg)
Firefoxでも綺麗に表示されました。
サンプル・デモ
- コード:GitHub – arm-band/table-on-firefox: Firefoxで`border-collapse: collapse;`した`table`に`border: dashed`等を付けるとずれる現象の再現コード
- デモ:Table at Firefox