border-collapse
、 border-spacing
、 empty-cells
: <table>
要素の罫線 CSSプロパティ
このページで解説するコードの実行結果。(タイトルの文字列をクリックすると、コードに移動)
りんご 🍎 | レモン 🍋 | |
スイカ 🍉 | メロン 🍈 |
りんご 🍎 | レモン 🍋 | |
スイカ 🍉 | メロン 🍈 |
りんご 🍎 | レモン 🍋 | |
スイカ 🍉 | メロン 🍈 |
りんご 🍎 | レモン 🍋 | |
スイカ 🍉 | メロン 🍈 |
りんご 🍎 | レモン 🍋 | |
スイカ 🍉 | メロン 🍈 |
HTML
& CSS
このページでは、以下のコードをデフォルトとして使用している。
<table class="sample"> <tr> <td>りんご 🍎</td> <td>レモン 🍋</td> <td><!-- 空セル --></td> </tr> <tr> <td>スイカ 🍉</td> <td><!-- 空セル --></td> <td>メロン 🍈</td> </tr> </table>
りんご 🍎 | レモン 🍋 | |
スイカ 🍉 | メロン 🍈 |
概要
<table>
要素の罫線を設定する。
このページでは、下表のCSSプロパティの解説をする。
CSSプロパティ | 機能 |
---|---|
border-collapse | 罫線の間の間隔の有無。 |
border-spacing | 罫線の間の間隔の広さ。 |
empty-cells | 空のセルに対する罫線の表示。 |
border-collapse: separate;
の場合のみ、罫線の間隔が開き、border-spacing
とempty-cells
が有効になる。
border-collapse
罫線の間の間隔の有無を指定。
設定値 | 罫線の間の間隔 | デフォルト |
---|---|---|
collapse | 開けない | ○ |
separate | 開ける |
- テーブルの
<th>
や<td>
要素にborder
プロパティを設定している場合のみ有効。 - デフォルトでは、 罫線の間は間隔なし。
collapse
: 罫線の間隔なし
.sample { border-collapse: collapse; }
りんご 🍎 | レモン 🍋 | |
スイカ 🍉 | メロン 🍈 |
デフォルト値はcollapse
であることを確認する。
.sample { }
りんご 🍎 | レモン 🍋 | |
スイカ 🍉 | メロン 🍈 |
separate
: 罫線の間隔あり
.sample { border-collapse: separate; }
りんご 🍎 | レモン 🍋 | |
スイカ 🍉 | メロン 🍈 |
この場合にのみ、 border-spacing
とempty-cells
は有効になる。
border-spacing
罫線の間の間隔を指定。 border-collapse: separate;
の場合のみ有効。
10px
に指定する。
.sample { border-collapse: separate; border-spacing: 10px; }
りんご 🍎 | レモン 🍋 | |
スイカ 🍉 | メロン 🍈 |
20px
に指定する。
.sample { border-collapse: separate; border-spacing: 20px; }
りんご 🍎 | レモン 🍋 | |
スイカ 🍉 | メロン 🍈 |
2つの引き数を指定して、「上下」の幅と「左右」の幅を個別に指定することもできる。
引き数の数 | 第一引き数 | 第二引き数 |
---|---|---|
1 | 上下左右 | - |
2 | 左右 | 上下 |
10px 20px
と指定する。第一引き数(10px
)が左右、第二引き数(20px
)が上下の幅になる。
.sample { border-collapse: separate; border-spacing: 10px 20px; }
りんご 🍎 | レモン 🍋 | |
スイカ 🍉 | メロン 🍈 |
empty-cells
空のセルに対する罫線の表示。border-collapse: separate;
の場合のみ有効。
空のセル(=何も値が設定されていないセル)に対する罫線の表示の有無を指定できる。
の設定値 | 空セル | デフォルト |
---|---|---|
show | 表示 | ○ |
hide | 非表示 |
.sample { border-collapse: separate; empty-cells: show; }
りんご 🍎 | レモン 🍋 | |
スイカ 🍉 | メロン 🍈 |
.sample { border-collapse: separate; empty-cells: hide; }
りんご 🍎 | レモン 🍋 | |
スイカ 🍉 | メロン 🍈 |
border-style: hidden;
ほとんど使うことの無い細かい話であるが説明しておく。
border
のページでborder-style
の設定値について説明しているが、none
でもhidden
でも線が「非表示になる」ので「none = hidden
」のように見える。
これが間違っていて、「none ≠ hidden
」であることを説明する。
(以下では、デフォルトCSSを含めたCSSを記述し、あえてborder
の指定を3行で書いている。)
まず、border-collapse: separate;
の結果を復習。赤い<table>
要素の枠線と青い<td>
要素の枠線の両方が見える。(↓ 下の結果)
table { border-width: 5px; border-style: solid; border-color: red; } td { border-width: 5px; border-style: solid; border-color: blue; padding: 10px; } .sample { border-collapse: separate; }
次にborder-collapse: collapse;
とした場合、<table>
要素の枠線が見えなくなった。(↓ 下の結果)
table { border-width: 5px; border-style: solid; border-color: red; } td { border-width: 5px; border-style: solid; border-color: blue; padding: 10px; } .sample { border-collapse: collapse; }
これは、赤線が青線に隠されているため。試しに、赤線を太く(6px
)してみると、青線が赤線で隠された。(↓ 下の結果)
table { border-width: 6px; border-style: solid; border-color: red; } td { border-width: 5px; border-style: solid; border-color: blue; padding: 10px; } .sample { border-collapse: collapse; }
では、青線をさらに太く(7px
)すると、再度 赤線が隠される。つまり、太い方が優先されることが分かる。(↓ 下の結果)
table { border-width: 6px; border-style: solid; border-color: red; } td { border-width: 7px; border-style: solid; border-color: blue; padding: 10px; } .sample { border-collapse: collapse; }
で、本題の border-style: hidden;
について。
コードを元に戻す。赤線は青線に隠されている。
table { border-width: 5px; border-style: solid; border-color: red; } td { border-width: 5px; border-style: solid; border-color: blue; padding: 10px; } .sample { border-collapse: collapse; }
<td>
要素のborder-style
をhidden
にしてみる。罫線は全部消えた。赤線も見えない。(↓ 下の結果)
table { border-width: 5px; border-style: solid; border-color: red; } td { border-width: 5px; border-style: hidden; border-color: blue; padding: 10px; } .sample { border-collapse: collapse; }
一方、<td>
要素のborder-style
をnone
にしてみる。赤線は見える。(↓ 下の結果)
table { border-width: 5px; border-style: solid; border-color: red; } td { border-width: 5px; border-style: none; border-color: blue; padding: 10px; } .sample { border-collapse: collapse; }
この意味は「線が存在するか否か」にある。
hidden
の場合は「まだ存在している」。そして、後ろにある線を「見えなく」する。
一方、 none
の場合は「存在していない」。よって、後ろにある線は「見える」ようになる。
設定値 | 存在 | 後ろにある線 |
---|---|---|
hidden | する | 見えなくなる |
none | しない | 見える |
ずいぶん哲学的な内容であるが、ほとんど使うことはない。
Emmet
記述 | Visual Studio Code |
---|---|
bdcl | border-collapse: collapse; |
bdcls | border-collapse: separate; |
bdsp | border-spacing: ; |
bdsp5 | border-spacing: 5px; |
ec | empty-cells: show; |
ech | empty-cells: hide; |