HTML表テーブルをCSSでおしゃれにデザインするコツ

当記事では、テーブル(表)のHTML解説および、CSSでデザインする時のコツを解説します。
ネットに転がっているテーブルデザインをコピペしても、上手くいかない理由も分かることでしょう。
ブロックエディタになってからというもの、選ぶだけでもそれなりの表を作れるようになりました。
ただ本気のテーブル表を作りたいとなったとき、まだまだブロックでは対応できません。
例えば、以下の問い合わせフォームのデザインはtableタグを使っています。
こうした投稿外に使用する場合や本格的な比較表を作りたいときは、tableタグの基礎やCSSをある程度理解しておくとコンバージョン率アップに直結します。
なるべくわかりやすく解説しましたので、ぜひ最後までお付き合いください。
HTMLテーブルタグは4つだけ覚えればOK
<table> <!-- 表の外枠開始タグ -->
<tr> <!-- 行の開始タグ -->
<th>見出し</th>
<td>セル</td>
</tr> <!-- 行の閉じタグ -->
</table> <!-- 表の外枠閉じタグ -->| 見出し(th) | セル(td) |
|---|
基本この4つを組み合わせて使います。<table>と<tr>は必ずセットで使用し、<th>と<td>を囲む形を取ります。
つまり基本的なHTML表は、中身の<th>と<td>の数を増やしたり、順番を入れ替えるだけなのです。
※.見出しの色は変更しています。
行を増やす
<table>
<tr> <!-- 1行目 -->
<th>見出し</th>
<td>セル</td>
</tr>
<tr> <!-- 2行目 -->
<th>見出し</th>
<td>セル</td>
</tr>
</table>| 見出し(th)1行目→ | セル(td) |
|---|---|
| 見出し(th)2行目→ | セル(td) |
行を増やすには、<tr>〜</tr>を追加します。
列を増やす
<table>
<tr>
<th>見出し</th> <!-- 左側 -->
<td>セル</td> <!-- 中央 -->
<td>セル</td> <!-- 右側 -->
</tr>
<tr>
<th>見出し</th>
<td>セル</td>
<td>セル</td>
</tr>
</table>| 見出し(th)1列目↓ | セル(td)2列目↓ | セル(td)3列目↓ |
|---|---|---|
| 見出し(th) | セル(td) | セル(td) |
列を増やすには<tr>〜</tr>の中に<th>または<td>タグを追加します。
ここで覚えて欲しいのは、タグは上から順にブラウザには左から並ぶことです。
画像をいれる
<table>
<tr>
<th><img src="https://kagesai.net/wp-content/uploads/2024/03/test.gif" alt="テスト1" /></th>
<td>セル</td>
<td>セル</td>
</tr>
<tr>
<th>見出し</th>
<td>セル</td>
<td><img src="https://kagesai.net/wp-content/uploads/2024/03/test2.gif" alt="テスト2" /></td>
</tr>
</table>![]() | セル | セル |
|---|---|---|
| 見出し | セル | ![]() |
imgタグを使えば、<th>または<td>タグの中に画像を入れることもできます。
挿入する位置に注意しましょう。
ボタンおよびリンクを入れる
<table>
<tr>
<th>見出し</th>
<td>セル</td>
<td>セル</td>
</tr>
<tr>
<th>見出し</th>
<td>セル</td>
<td><a class="btn" href="#">ボタンサンプル</a></td>
</tr>
</table>| 見出し | セル | セル |
|---|---|---|
| 見出し | セル | ボタンサンプル |
aタグを使えば、<th>または<td>タグの中にボタンやテキストリンクを入れることもできます。
挿入する位置に注意しましょう。
セルを横につなげる
<table>
<tr>
<th>見出し</th>
<td colspan="2">ここを繋げています</td>
<!-- 本来ここにあるセルを消している -->
</tr>
<tr>
<th>見出し</th>
<td>セル</td>
<td>セル</td>
</tr>
</table>| 見出し | ここを繋げています | |
|---|---|---|
| 見出し | セル | セル |
セル同士を”横”に繋げるときは、 colspanを使います。
値は繋げる数を指定するものです、5〜6行目に注目してください。
セルを縦につなげる
<table>
<tr>
<th>見出し</th>
<td>セル</td>
<td rowspan="2">ここを繋げています</td>
</tr>
<tr>
<th>見出し</th>
<td>セル</td>
<!-- 本来ここにあるセルを消している -->
</tr>
</table>| 見出し | セル | ここを繋げています |
|---|---|---|
| 見出し | セル |
セル同士を”縦”に繋げるときは、 rowspanを使います。
仕組みは横に繋げるときと同じですが、6行目と12行目を確認してみましょう。
見出し(th)タグの基本4パターン
見出し(<th>)タグは行(<tr>)の中ならどこにでも設置できますが、以下の4つのパターンを覚えておけば、大抵の表には対応できるはずです。
左側に見出し
<table>
<tr>
<th>メーカー</th>
<td>Apple</td>
</tr>
<tr>
<th>モデル</th>
<td>MacBook Air M3</td>
</tr>
<tr>
<th>特徴</th>
<td>M2チップまでは外部ディスプレイ1台対応でした。<br>M3からクラムシェルモード限定なら、2台対応になります。</td>
</tr>
</table>| メーカー | Apple |
|---|---|
| モデル | MacBook Air M3 |
| 特徴 | M2チップまでは、外部ディスプレイ1台対応でした。 M3からクラムシェルモード限定なら、2台対応になります。 |
左側見出しは、セルの中身が長くなるときに適しています。
上側に見出し
<table>
<tr>
<th>メーカー</th>
<th>ブランド</th>
<th>モデル</th>
</tr>
<tr>
<td>Apple</td>
<td>Mac</td>
<td>MacBook Air</td>
</tr>
</table>| メーカー | ブランド | モデル |
|---|---|---|
| Apple | Mac | MacBook Air M3 |
上側見出しは、2列以上の表に適しています。
スマホ閲覧も考慮すると、4列以上は横スクロール指定必須かと思います。
左と上に見出し
<table>
<tr>
<th>モデル</th>
<th>発売日</th>
</tr>
<tr>
<th>MacBook Air M3</th>
<td>2024年3月8日</td>
</tr>
<tr>
<th>MacBook Pro M3</th>
<td>2023年11月7日</td>
</tr>
</table>| モデル | 発売日 |
|---|---|
| MacBook Air M3 | 2024年3月8日 |
| MacBook Pro M3 | 2023年11月7日 |
左と上に見出しは、左側の内容も強調したいときに適しています。
使う機会はすくないと思いますが、見出しタグ(<th>)は前後左右どこにでも指定できる例ですね。
上と中央に見出し
<table>
<tr>
<th>MacBook Air M3</th>
<th>比較</th>
<th>MacBook Pro M3</th>
</tr>
<tr>
<td>164,800円(税込)〜</td>
<th>価格</th>
<td>248,800円(税込)〜</td>
</tr>
<tr>
<td>13.6/15.3インチ</td>
<th>サイズ</th>
<td>14.2インチ</td>
</tr>
</table>| MacBook Air M3 | 比較 | MacBook Pro M3 |
|---|---|---|
| 164,800円(税込)〜 | 価格 | 248,800円(税込)〜 |
| 13.6/15.3インチ | サイズ | 14.2インチ |
上と中央見出しは、2つの比較表に適しています。
テキストは中央にすると良いでしょう。
その他のオプションタグや属性は不要
- <thead>
- <tbody>
- <tfoot>
- <caption>
- <colgroup>
- その他属性など
一応tableタグでは、上記のタグや属性も使えます。
ただし、複雑になるだけですので、基本の4つだけ覚えておけば問題ありません。
カゲオ興味のある方は調べてみてね
テーブル表のCSS基礎編
WordPress利用者は、ネットに転がっているテーブル表デザインをコピペしても上手くいかない場合が多いのではないでしょうか。
おそらく、使っているテーマのテーブル表に対するCSSが競合してしまっているためだと思われます。
そのため、当記事ではイチから指定するのではなく、どのテーマでも使えるようなCSSカスタマイズだけを解説しました。
CSSを書く場所


基本的に外観→テーマファイルエディタ→style.cssに書きましょう。
ここに書けば、すべてのtableタグに反映されます。


特定の記事のテーブルだけデザインを変える場合。
投稿画面で”/カスタム“と入力し、カスタムHTMLブロックを呼び出しましょう。
その中に<style>タグを使って書きます。
<style>
table{
この中にCSSを指定する。
}
</style>これでその記事だけ反映されます。
CSSが効かない場合
!important;(優先)を指定してみてください。
例:color:#fff!important;
HTMLで個別にclassを指定する方法
<table class="test1"><!-- テーブル全体に指定 -->
<tr>
<th class="test2">この見出しだけ指定</th>
<th>ブランド</th>
<th>モデル</th>
</tr>
<tr>
<td>Apple</td>
<td class="test3">このセルだけ指定</td>
<td>MacBook Air</td>
</tr>
</table>このようにそれぞれのタグにclass名を指定することもできます。
先ほどの特定の記事だけ反映させる方法と合わせて使うと良いですね。
tableブロックにclassを指定する方法


投稿画面で①”/テーブル“と入力し、テーブルブロックを呼び出しましょう。
ブロックの上で左クリック、右サイドバーの②高度な設定を展開します。
追加CSSクラスに③任意のclass名を書いてください。
作ったテーブルブロックをすぐ呼び出せるようにする
ここでは当サイトテーマSWELL
テーマにより管理画面サイドバー名称が異なったり、使い方に若干の違いはあります。


①サイドバーの「パターン」をクリック
②「新規パターンを追加」をクリック


③同期を「OFF」にする
④「生成」をクリック


①タイトル:ショートコードで呼び出す際の名称
②良く使いそうなテーブル表のテンプレートを作成してください。
③公開をクリック。


投稿画面で”/比較“と入力し、先ほど作成した比較表ブロックを選択すると一発で呼び出せます。
テーブル表のCSSデザインマニュアル
線の種類・太さ・色を変える
| 線の種類を | 点線へ | 変更 |
|---|---|---|
| 太さは2px | 色は黒に | 変更 |
table th,table td,table tr{
border:0!important;
}
table th,table td{
border:dashed 2px #000!important;
}一旦テーブルに指定されている枠線をリセットしましょう。
その後、新たにborder属性を指定します。
線の種類は、以下で詳しく解説しました。
テーブル内テキストをど真ん中にする
| テキストが | 複数行でも | 中央になる |
|---|---|---|
| サンプル | サンプル サンプル サンプル | サンプル |
table{
text-align:center!important;
vertical-align:middle!important;
}左右の指定だけだと縦位置がズレるため、上下も真ん中にするのを忘れずに。
すべてのセル幅を均等にする
| 例えば | すべて | 文字数 | 同じ時 |
|---|---|---|---|
| 均等に | すると | 綺麗に | 見える |
table{
table-layout:fixed;
}見出し(th)の背景とフォントカラーを変更する
| 見出しの背景を青 | フォントカラーを | 白に変更 |
|---|---|---|
| サンプル | サンプル | サンプル |
table th {
background:#3d79d5!important;
color:#fff!important;
}見出し(th)以外の色を指定する
| 見出し | カラーは | 固定 |
|---|---|---|
| その他の | セルの | 背景色を |
| 1色に | 指定 | する |
table th {
background:#3d79d5!important;
color:#fff!important;
}
table td {
background:#ffead6;
}colorを指定すれば、テキストカラーも変更できます。
見出し以外の行(tr)をツートンカラーにする
| 見出しカラーは | 固定して | セルを交互に色変更 |
|---|---|---|
| 偶数行は | すべて | オレンジ色 |
| 奇数行は | すべて | ミドリ色 |
table th {
background:#3d79d5!important;
color:#fff!important;
}
/* 偶数行の背景カラー */
table tr:nth-child(even){
background:#ffead6;
}
/* 奇数行の背景カラー */
table tr:nth-child(odd){
background:#d6ffea;
}見出しカラーは優先指定しているため、その下の行からカウントされます。
colorを指定すれば、テキストカラーも変更できます。
特定の行(tr)だけ色を付ける
| 見出し | 見出し | 見出し |
|---|---|---|
| サンプル | サンプル | サンプル |
| この行だけ | 背景色を | 付ける |
table tr:nth-child(3){
background:#d6ffea;
} ()内の値が行数の指定です。
特定の場所だけ目立たせたいときに有効です。
colorを指定すれば、テキストカラーも変更できます。
見出しを改行させない
| 見出しだけ | Apple |
|---|---|
| 改行しない | MacBook Air M3 |
| 指定をする | M2チップまでは、外部ディスプレイ1台対応でした。 M3からクラムシェルモード限定なら、2台対応になります。 |
table th {
white-space:nowrap;
}横にスクロールさせる
| 画面の幅を | 超えたら | 自動的に | 横スクロールバーが | 表示 | されるよ |
|---|---|---|---|---|---|
| サンプル | |||||
table{
white-space: nowrap;
overflow-x: auto;
}
table::before {
font-size: 13px;
content: "横にスクロールできます";
position: sticky;
left: 0;
}Safariブラウザのみ、スクロールバーが非表示になる仕様のため、横にスクロールできることを示唆してあげると親切ですね。
横スクロールの1列目だけ固定する
| この列だけ | 横にスクロール | してみてーーーーー | ーーーーーー | ーーーーーーー | ーーーーーーー |
|---|---|---|---|---|---|
| 固定する | 横に | 長ーーーーーーーーーい | コンテンツを | 入れる時は | 使ってみてね |
table{
white-space: nowrap;
overflow-x: auto;
}
table::before {
font-size: 13px;
content: "縦にスクロールできます";
position: sticky;
left: 0;
}
table th:first-child,table td:first-child{
position: sticky ;
left: 0;
z-index:3;
}
table td:first-child{
background:#fff;
}11行目のセル(td)の背景カラーを指定しないと、他の要素と重なってしまうため注意。
見出しを縦に追従させる
| 見出しを | 固定して | 追従させる |
|---|---|---|
| サンプル | サンプル | サンプル |
| サンプル | サンプル | サンプル |
| サンプル | サンプル | サンプル |
| サンプル | サンプル | サンプル |
| サンプル | サンプル | サンプル |
| サンプル | サンプル | サンプル |
| サンプル | サンプル | サンプル |
| サンプル | サンプル | サンプル |
<table class="vertical-scroll">
<tr>
<th>見出しを</th>
<th>固定して</th>
<th>追従させる</th>
</tr>
<tr>
<td>サンプル</td>
<td>サンプル</td>
<td>サンプル</td>
</tr>
・
・
・
</table>縦の追従は、1行目のtableタグにclass指定しないと上手くいきません。
.vertical-scroll{
overflow-y: auto;
max-height: 250px;
}
.vertical-scroll::before {
font-size: 13px;
content: "縦にスクロールできます";
}
.vertical-scroll th{
position: sticky;
top: 0;
z-index:2;
border:1px;
}左見出しをスマホだけ上に並べる
| パソコンから見た | サンプルーーーーーーーーーーーーーーーーーーーーーー |
|---|---|
| テーブル表は | サンプルーーーーーーーーーーーーーーーーーーーーーー |
| 左側に見出し | サンプルーーーーーーーーーーーーーーーーーーーーーー |
| スマホから見ると |
|---|
| サンプル |
| 見出しが |
|---|
| サンプル |
| 上に並ぶ |
|---|
| サンプル |
@media(max-width:500px) {
table th,table td,table tr{
display:block;
width:100%;
border:none!important;
}
table {
border: solid 2px #eee!important;
}
table th {
text-align:center;
}
}テーブル内の画像サイズを調整する
| 見出し | 見出し | 見出し |
|---|---|---|
| サンプル | 画像サイズを50pxに指定 | サンプル |
| サンプル | ![]() ![]() | サンプル |
table img{
width:50px!important;
}ここまでのカスタマイズはSWELLなら選ぶだけで可能


実は当サイトテーマSWELL
また4パターンのデザインやボタン、アイコンも最初から用意されています。
| シンプル | デザイン |
|---|---|
![]() ![]() | ![]() ![]() |
| 二重線 | デザイン |
|---|---|



以前使っていたSANGOから1ヶ月以上かけて、テーマを乗り換えたくらいおすすめ
テーブルCSSマニアックカスタム
特定のセル(th・td)だけ色を変える
| 見出し | 見出し | ここの色を変える |
|---|---|---|
| ここの色を変える | サンプル | サンプル |
<table>
<tr>
<th>見出し</th>
<th>見出し</th>
<th class="header-color">ここの色を変える</th>
</tr>
<tr>
<td class="cell-collar">ここの色を変える</td>
<td>サンプル</td>
<td>サンプル</td>
</tr>
</table>.header-color{
background:#add6ff!important;
}
.cell-collar{
background:#ffffad;
}各タグにclassを指定すれば可能です。
テーブルブロックでもできなくはないですが、非常に面倒なので、この場合はHTMLで書いちゃったほうが楽ですね。
マウスを乗せたとき行(tr)の色を変える
| 見出し | カラーは | 固定する |
|---|---|---|
| マウスを | 乗せて | みてね |
| 背景色が | グレーに | 変わるよ |
table th{
background:#e44141!important;
}
table tr:hover{
background:#f1f1f1;
} 見出しの色は変わらないように、優先!important;指定しましょう。
結論:テーブルタグは使いこなせばコンバージョン率を上げられる
以上、HTMLテーブルの基礎とCSSの調整方法を解説しました。
ブロックエディタ全盛時代、HTMLを書く必要はほとんどなくなりました。
しかしテーブル表は、使いこなすとコンバージョン率に直結する数少ないタグです。
特に比較表は作り方次第で、めちゃくちゃクリック率が変わります。
WEBサイトを使ったビジネスをしているなら、覚えておいて損はないでしょう。
以下の問い合わせフォームもテーブルタグで作成しています。










記事への質問等はこちらからどうぞ