CSS border-collapse テーブルの枠線を重ねる/離す

目次

サンプル border-collapse
テーブルの枠線を重ねて表示(collapse)
テーブルの枠線を離して表示(separate)
テーブルの一部の線を消す
separateでテーブルを作成

border-collapse

border-collapseは、テーブルの枠線を重ねる/離します。

border-collapse : 値

値は以下を設定します。継承します。

collapse テーブルの枠線(ボーダー)を重ねて表示します。
collapseは崩壊という意味です。
separate テーブルの枠線(ボーダー)を離して表示します。
separateは分けるという意味です。デフォルト。

border-collapseがseparateのときの枠線の間隔は、border-spacingで設定します。
CSS border-spacing テーブルの枠線の間隔を指定

 

テーブルの枠線を重ねて表示(collapse)

border-collapseにcollapseを指定しています。テーブルの枠線が重なります。

<style>
  table {
    border-collapse: collapse; /* 枠線(ボーダー)を重ねて表示 */
    width: 100px;
  }
  td {
    border: 1px solid #000;
  }
</style>
<table>
  <tr>
    <td>1</td>
    <td>赤</td>
  </tr>
  <tr>
    <td>2</td>
    <td>青</td>
  </tr>
</table>

 

テーブルの枠線を離して表示(separate)

border-collapseにseparateを指定しています。テーブルの枠線が離れます。

<style>
  table {
    border-collapse: separate; /* 枠線(ボーダー)を離して表示 */
    width: 100px;
  }
  td {
    border: 1px solid #000;
  }
</style>
<table>
  <tr>
    <td>1</td>
    <td>赤</td>
  </tr>
  <tr>
    <td>2</td>
    <td>青</td>
  </tr>
</table>

 

テーブルの一部の線を消す

赤とredの間の線を消しています。
border-collapseにcollapseを指定し、線を消す箇所にborderのnoneを指定します。
(10行目のborder-rightと13行目のborder-leftにnoneを指定)

<style>
  table {
    border-collapse: collapse;
    width: 100px;
  }
  td {
    border: 1px solid #000;
  }
  .td1 {
    border-right: none;
  }
  .td2 {
    border-left: none;
  }
</style>
<table>
  <tr>
    <td>1</td>
    <td class="td1">赤</td>
    <td class="td2">red</td>
  </tr>
  <tr>
    <td>2</td>
    <td>青</td>
    <td>blue</td>
  </tr>
</table>

 

separateでテーブルを作成

border-collapse:collapseの場合、ブラウザのバージョンによってはテーブルの線の表示がおかしくなるときがあります。
その場合はseparateとborder-spacing=0で枠線の間隔をなくして、borderの部分指定を行います。

5行目をborder-collapse: separateにしています。

<style>
  table {
    border-top: 1px solid black;
    border-left: 1px solid black;
    border-collapse: separate;
    border-spacing: 0px;
  }
  td {
    border-right: 1px solid black;
    border-bottom: 1px solid black;
  }
</style>
<table>
  <tr>
    <td>テスト1</td>
    <td>テスト2</td>
    <td>テスト3</td>
  </tr>
  <tr>
    <td>テスト4</td>
    <td>テスト5</td>
    <td>テスト6</td>
  </tr>
</table>

3,4行目はtableタグの上と左にborderを指定しています。
9,10行目は、tdタグの右と下にborderを指定しています。
この場合、borderが重なって表示がおかしくなる等は起こらなくなります。

関連の記事

CSS padding 要素の内側の余白を指定する
CSS margin 外側の余白/中央・右に寄せる

△上に戻る