border-collapse: collapseを設定すると、background: linear-gradientの描画が少し汚くなります。
調査のため、次のように最小のHTMLで実験しました。
<style>td { border: solid 1px; background: linear-gradient(90deg, red 50%, lime 50%) }</style>
<table><tr><td>0</td><td>1</td></tr></table>
<table style="border-collapse: collapse"><tr><td>0</td><td>1</td></tr></table>
1つ目のテーブルは意図したとおり赤と緑の半々の背景になります。
2つ目のテーブルはborder-collapse: collapseを設定しています。
border-collapse: collapseを設定するとセルの端や中央に、意図しない極細の黄土色(恐らく赤と緑の中間色)の縦線が表示されてしまいます。
border-collapse: collapseで枠線を無理やり重ねることの副反応として背景色の端と端までも重なってしまうということでしょうか(IEで試したらこのような現象は発生せず綺麗に表示されました)。
これを回避する方法はいくつもあると思いますが、あなたが思うに最もスマートな回避法を教えてください。
No.2
- 回答日時:
複数あろうがテーブルなんか使わないほうがいい。
テーブル使ってスマートもくそもない
と思います。
No.3
- 回答日時:
わたしの環境では、その現象は発生しませんでした。
chromeです。
もし、
border-collapse: collapse
を使わないとなると、
テーブルではなくなりますが、
flexなどで強制的に表示を変えるのはいかがでしょうか。
<style>
table,tbody,thead{display:block;}
tr{display:flex;justify-content:left;flex-wrap:nowrap;}
td {margin:0; border: solid 1px; background: linear-gradient(90deg, red 50%, lime 50%) }
</style>
環境によるのですね。
私もchromeですが不思議です。
試しにFirefoxで表示してみたら問題ありませんでした。
またスマホだと背景が重なる問題は発生しないもののセルの枠線がどう見ても1pxではありませんでした。
ブラウザの問題なら、こちらでは何もせずブラウザの対応を待つ方がスマートか?とも思っています。
flexは少し学習が必要です。
試しに、ご提示のコードを張り付けてみたところ、背景が重なる問題は発生しないものの、枠線も完璧には重ならず、隣り合わせになるだけなので2pxの線が1本あるように見えます。
これは私が今までborder-collapse: collapseの代わりにborder-spacing: 0と指定していた時と同じ見た目です。
No.4ベストアンサー
- 回答日時:
No3です。
>枠線も完璧には重ならず、隣り合わせになるだけなので2pxの線が1本あるように見えます。
たしかにそうですね。
このまま、flex方針をつき進むなら、
td~td{border-left:none;}
を追記するとかでしょうけど...
しかし、改行したら(trが複数重なったら)
tr~tr>td{border-top:none;}
をさらに追記して、
theadやtbodyが出てきたら、
それにも対応して...
と、場合分けがたくさん出てきて、
まったくスマートではなくなってしまいますね。
border-left:noneやborder-top:noneは、border-collapseが無かった頃のテクニックでしょうか、たまに解説しているサイトを見ます。
今回のようにborder-collapseの表示が気に入らない時に使えるテクニックとして押さえておきます。
flexというかcssの学習は、また基礎から始めるとして、現状はborder-collapseの表示が気に入らないため、代わりにborder-spacing: 0を設定したいと思います。
これは枠線の太さが2pxになってしまうので、かなりダサいですが、他の場所に手を加える必要がなくシンプルなので甘んじます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- HTML・CSS テーブルタグのセルの幅の一部だけを指定 1 2023/03/12 12:02
- Visual Basic(VBA) Selenium.ChromeDriverの使い方について 7 2022/09/22 06:43
- HTML・CSS 自身のHPにYouTube動画を貼り付けるのが出来なくなり困ってます 1 2022/11/11 10:44
- JavaScript EasyUIのSubGrid(jquery)におけるObjectに入れた連想配列について 1 2022/05/02 11:21
- JavaScript jQueryで同じクラス名のものを別物として扱いたい 1 2022/06/17 14:14
- AJAX JavascriptからPHPへのAjax通信でnullが返ってくる 3 2022/08/03 22:00
- PHP htmlで複数の個数入力欄を表示させるには 1 2022/09/20 03:11
- HTML・CSS 【CSS】:hasで可能? imgを含むtr要素を選択したい 1 2022/11/17 14:36
- HTML・CSS CSS のみのタブ切り替えについて 1 2023/01/11 16:47
- MySQL SQL任意に並び替えをしたい 2 2023/08/28 10:47
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
cssで、表示されるテキストによ...
-
テーブルの任意の列を非表示に...
-
文字列が入っているtdを削除せ...
-
html・cssで日付をキレイに揃え...
-
TABLE内の枠線を一部消すには
-
中に<table></table>が使えるア...
-
テーブル(表)を2つ横に並べて...
-
テーブルのヘッダとボディの幅...
-
TRタグの余白をcssで設定するには
-
逆L字の表(table)組み
-
HTML <td></td>タグ セル内余...
-
HTMLのテーブルで桁をそろ...
-
テーブルタグの中に<ol><li>を...
-
テーブルをスクロールさせると...
-
htmlのtable内に画像
-
テーブルの行を折りたたみたい...
-
table の行間があいてしまう。
-
テーブルの表示がずれます
-
表の1列だけをCSSを使って右揃...
-
tableにul,または,olを入れられ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
TRタグの余白をcssで設定するには
-
tableにul,または,olを入れられ...
-
テーブルの任意の列を非表示に...
-
テーブルのヘッダとボディの幅...
-
cssで、表示されるテキストによ...
-
HTML <td></td>タグ セル内余...
-
文字列が入っているtdを削除せ...
-
テーブルのセルに画像をピッタ...
-
テーブルの行を折りたたみたい...
-
テーブルの行の高さを指定する...
-
テーブルの表示がずれます
-
テーブルタグのセルの幅の一部...
-
中に<table></table>が使えるア...
-
逆L字の表(table)組み
-
ホームページ 表の上の余白を...
-
表の中の列の順番を入れ替える...
-
EXCELからhtmlへの変換で罫線が...
-
tableでcolspanを使うと次行以...
-
表の1列だけをCSSを使って右揃...
-
文字の中央そろえを一括で指定...
おすすめ情報