こんにちは。すずきです。
本記事ではCSS
で角丸のテーブルを作成する方法を紹介します。
- 角丸のテーブルを作成する方法が分からない。
- 自分で角丸のテーブルを作ろうとするとなぜかうまくいかない。
- 既存のテーブルを角丸にする方法が分からない。
角丸テーブルが上手くできない原因
「角を丸くする」となるとまず思いつくのがborder-radius
と思うのですが、<table>
タグに指定しても上手く反映されない方も多いと思います。
実はborder-collapse: collapse;
の指定があると<teble>
の角は丸くなりません。
自分で指定したつもりがなくても、リセットCSSで指定されている場合があります。
なので角丸テーブルを作成する場合は、まずborder-collapse: collapse;
を変更するところから始めます。
それでは、次から具体的な実装方法を解説していきます。
角丸テーブルの実装方法
HTMLを記述する
まずはHTML
を作成します。
ここは特に意識することはなく、普段と同じように記述して大丈夫です。
今回の例で記述したコードは以下になります。
<table class="table__round">
<thead>
<tr>
<th>タイトル1</th>
<th>タイトル2</th>
<th>タイトル3</th>
</tr>
</thead>
<tbody>
<tr>
<td>テキスト1</td>
<td>テキスト2</td>
<td>テキスト3</td>
</tr>
<tr>
<td>テキスト1</td>
<td>テキスト2</td>
<td>テキスト3</td>
</tr>
<tr>
<td>テキスト1</td>
<td>テキスト2</td>
<td>テキスト3</td>
</tr>
</tbody>
</table>
CSSを記述する
border-collapseを指定
まずは先ほど書いたborder-collapse
を指定を指定します。border-collapse
はセル同士の隙間を指定するプロパティで、collapse
で隙間無し、separate
で隙間有りになります。
collapse
では角が丸くならないので、separate
を指定します。
.table__round {
border-collapse: separate;
}
border-spacingを指定する
border-collapse: separate;
を指定したことで、セル同士に隙間ができてしまったかと思います。
なので次はセル同士の隙間を直していきます。
セル同士の隙間は、border-spacing
で指定することができますので、0を指定します。
.table__round {
border-spacing: 0;
}
borderを記述する
次に枠線を記述していきますが、border-collapse: separate;
を指定している場合、線が重複します。
th,td {
border-top: solid 1px red;
border-left: solid 1px red;
border-bottom: solid 1px blue;
border-right: solid 1px blue;
}
今回は例として、上と左は赤、下と右は青のborder
を各セルに入れています。
セル同士重なる部分はborder
も重複し、紫がかっています。
重複しないよう注意しながら、border
を指定していきます。
今の例から、赤い線を消すイメージです!
.table__round {
border-top: solid 1px lightgray;
border-left: solid 1px lightgray;
}
.table__round th,
.table__round td {
border-bottom: solid 1px lightgray;
border-right: solid 1px lightgray;
}
各セルの下と右にborder
を指定し、<table>
タグの上を左にもborder
を指定しています、
border-radiusを指定する
最後に角を丸くしていきます。border-radius
を指定するのは以下の2ヶ所です。
<table>
タグ- 各角のセル
.table__round {
border-radius: 1rem;
}
.table__round thead tr:first-child th:first-child {
border-top-left-radius: 1rem;
}
.table__round thead tr:first-child th:last-child {
border-top-right-radius: 1rem;
}
.table__round tbody tr:last-child td:first-child {
border-bottom-left-radius: 1rem;
}
.table__round tbody tr:last-child td:last-child {
border-bottom-right-radius: 1rem;
}
これで、以下のような角丸のテーブルが作成できたと思います。
完成品のコードもこちらにまとめています。
See the Pen 【CSS】角丸テーブルの作り方 by すずき (@k-suzuki3533) on CodePen.
終わりに
CSSで角丸のテーブルを作成する際のポイントは以下の通りです。
border-collapse: separate;
を指定し、角が丸くなるようにするborder-spacing
を指定し、セル同士の隙間を無くす- 線が重複しないよう
border
を指定する <table>
タグと各角のセルの両方にborder-radius
を指定する
本記事で紹介した方法を実践すれば、初心者でも簡単に角丸のテーブルを作成できます。ぜひお試しください!