MEMORVA

table要素の境界線(ボーダー)の太さや色を一部だけ変えたり消すCSS

更新:2026-04-26

普段 table 要素の境界線は border(ボーダー)でまとめて定義するので忘れていたが、border-top、border-right、border-bottom、border-left を td 要素に使えば、テーブル(セル)の枠線を部分的に変更できる。

以下HTML。

<table class="ex_table">
<tr>
<td>あああ</td>
<td class="ex_border_a">あああ</td>
</tr>
<tr>
<td>あああ</td>
<td>あああ</td>
</tr>
</table>

以下CSS。

table.ex_table {
  border-collapse: collapse;
  border: 0;
}

table.ex_table td {
  border: 1px solid #222;
  padding: 3px;
}

table.ex_table td.ex_border_a {
  border-bottom: 3px solid red;
}

表示例。

あああ あああ
あああ あああ

線の太さ、スタイル、色は border-bottom-width、border-bottom-style、border-bottom-color のように個別に指定しても良い。 bottom の部分は必要に応じてそれぞれ top、right、left に変える。 または、border-width、border-style、border-color でそれぞれ上右下左指定しても良い。

以下HTML。

<table class="ex_table">
<tr>
<td class="ex_border_b">あああ</td>
<td>あああ</td>
</tr>
<tr>
<td>あああ</td>
<td>あああ</td>
</tr>
</table>

以下CSS。

table.ex_table {
  border-collapse: collapse;
  border: 0;
}

table.ex_table td {
  border: 1px solid #222;
  padding: 3px;
}

table.ex_table td.ex_border_b {
  border-bottom-width: 3px;
  border-bottom-style: dotted;
  border-bottom-color: blue;
}

表示例。

あああ あああ
あああ あああ

この際、線の width が 1px だと線のスタイルが変わらないので 2px 以上にする。 以上を踏まえ、私がこのCSSを利用してやりたかったのが、表が2つ横に並んでいるように見せることで、以下に記す。

表が横に並んでいるように見せる

1つのテーブルに間に境目を作るための空のセルを設け、そのセルに border:0 を指定して枠線を消せば、表が2つ並んでいるように見える。 要するにエクセルの枠線と同じである。 私は昔なんとなく枠線と同じ色でセルを塗りつぶしていたが、透明の方が表が見やすい。

以下HTML。

<table class="ex_table">
<tr>
<td>男性</td>
<td>点数</td>
<td class="ex_border_e"></td>
<td>女性</td>
<td>点数</td>
</tr>
<tr>
<td>鈴木</td>
<td>98点</td>
<td class="ex_border_e"></td>
<td>阿部</td>
<td>100点</td>
</tr>
<tr>
<td>佐藤</td>
<td>95点</td>
<td class="ex_border_e"></td>
<td>木下</td>
<td>96点</td>
</tr>
<tr>
<td>山田</td>
<td>94点</td>
<td class="ex_border_e"></td>
<td>伊藤</td>
<td>94点</td>
</tr>
</table>

以下CSS。

table.ex_table {
  border-collapse: collapse;
  border: 0;
}

table.ex_table td {
  border: 1px solid #222;
  padding: 3px;
}

table.ex_table td.ex_border_e {
 border: 0;
 width: 20px;
}

表示例。

男性 点数 女性 点数
鈴木 98点 阿部 100点
佐藤 95点 木下 96点
山田 94点 伊藤 94点

サイトを作っていると、こういう風に表に隙間を設けたいときがある。 表を2つ作って並べても良いが、1つの表で済ませたい場合は、こういう書き方もできる。

ただ複数の表を並べたい場合は、display:flex を使った方が良いかもしれない。

境界線を太くして表を別ける

表の間の境界線を太くして、表が別れているように見せることもできるが、見た目はあまり良くない。

以下HTML。

<table class="ex_table">
<tr>
<td>男性</td>
<td class="ex_border_f">点数</td>
<td>女性</td>
<td>点数</td>
</tr>
<tr>
<td>鈴木</td>
<td class="ex_border_f">98点</td>
<td>阿部</td>
<td>100点</td>
</tr>
<tr>
<td>佐藤</td>
<td class="ex_border_f">95点</td>
<td>木下</td>
<td>96点</td>
</tr>
<tr>
<td>山田</td>
<td class="ex_border_f">94点</td>
<td>伊藤</td>
<td>94点</td>
</tr>
</table>

以下CSS。

table.ex_table {
  border-collapse: collapse;
  border: 0;
}

table.ex_table td {
  border: 1px solid #222;
  padding: 3px;
}

table.ex_table td.ex_border_f {
  border-right: 15px solid #222;
}

表示例。

男性 点数 女性 点数
鈴木 98点 阿部 100点
佐藤 95点 木下 96点
山田 94点 伊藤 94点

見た目は、空のセルを設け、それを枠線と同じ色で塗りつぶす方法と同じ。 ただ、この方法は空のセルを用意する必要がない。

display:flex で表を並べる

複数の表をCSSのdisplay:flexを使って並べる。

以下HTML。

<div class="ex_flex">

<table>
<tr>
<td>東京</td>
<td>神奈川</td>
<td>千葉</td>
<td>埼玉</td>
</tr>
</table>

<table>
<tr>
<td>大阪</td>
<td>京都</td>
<td>兵庫</td>
<td>奈良</td>
</tr>
</table>

</div>

以下CSS。

.ex_flex {display:flex;flex-direction:row;flex-wrap:wrap;gap:20px;}

gapで上下左右のスペース(間隔)を調整できる。