ブログで商品のスペックや料金比較表を作ったとき、「スマホで見たら画面からはみ出して文字が読めない…!」と悩んだことはありませんか?
最近のWebサイトへのアクセスは7〜8割がスマートフォンです。表がスマホ対応できていないと、読者はすぐにページから離脱してしまいます。
この記事では、プラグインを使わずにHTMLとCSSのコピペだけで実装できる「スマホで崩れない!レスポンシブな表デザイン10選」をご紹介します。
WordPressのテーマ(CocoonやSWELLなど)には、最初から表(<table>)に対するCSSデザインが強力に設定されています。そのため、ネットで拾った表のコードをコピペしても、テーマのデザインと混ざって崩れてしまうことがよくあります。
そこで今回は、モダンなHTML5以降の仕様である「<dl>タグの中に<div>を入れる構造」を採用しました。これによりテーマのCSS干渉を完全に回避し、誰がコピペしても一発で綺麗に表示されるようになっています!
【基本のHTML】コピペするのはこれだけ!
デザインを変える前に、まずはベースとなるHTML構造を記事内に配置します。すべてのデザインはこの class="kz-dl-table" にクラスを追加するだけで切り替えられます。
<!-- 横スクロールさせるための枠 -->
<div class="kz-dl-wrap">
<!-- ここにクラス名を追加してデザインを変えます -->
<dl class="kz-dl-table">
<!-- 1行目のグループ -->
<div class="kz-dl-row">
<dt>項目名1</dt>
<dd>データA</dd>
<dd>データB</dd>
</div>
<!-- 2行目のグループ -->
<div class="kz-dl-row">
<dt>項目名2</dt>
<dd>データC</dd>
<dd>データD</dd>
</div>
</dl>
</div>
パターンA:横スクロール対応テーブル 5選
列が多くてスマホ画面に収まらない表は、指でスワイプできる「横スクロール」にするのが基本です。
1. シンプルベーシック
- プラン名
- スタンダード
- プレミアム
- 料金
- 1,000円
- 2,000円
/* 1. シンプルベーシック */
.kz-dl-01 { border-top: 2px solid #ccc; border-left: 2px solid #ccc; }
.kz-dl-01 dt, .kz-dl-01 dd { border-right: 2px solid #ccc; border-bottom: 2px solid #ccc; }
2. ストライプ(行が交互に色付け)
- 項目A
- テキストデータ
- 項目B
- テキストデータ
- 項目C
- テキストデータ
/* 2. ストライプ */
.kz-dl-02 .kz-dl-row:nth-child(even) dd { background: #fdfdfd; }
.kz-dl-02 .kz-dl-row:nth-child(even) dt { background: #f0f0f0; }
3. ヘッダーカラー強調
- プラン
- 無料版
- 有料版
- サポート
- コミュニティのみ
- 24時間チャット
/* 3. ヘッダーカラー(ご自身のサイトカラーに変更してください) */
.kz-dl-03 dt { background: #28a745; color: #fff; }
4. 左端見出し固定(超便利!)
横スクロールしても「左端の項目名」が固定されてついてくる、実務で大活躍のCSSです。
※パソコンでもスクロールを確認できるよう、少し横幅を広げたデモになっています。
- 機能
- A社ツール
- B社ツール
- C社ツール
- D社ツール
- 初期費用
- 無料
- 1万円
- 5万円
- 無料
/* 4. 左端見出し固定 */
.kz-dl-04 dt {
position: sticky;
left: 0;
background: #f0f7ff;
z-index: 1;
border-right: 2px solid #007bff;
}
5. ホバーハイライト
マウスを乗せるとその行がフワッと光ります。
- 対象ユーザー
- 初心者向け
- プロ向け
- カスタマイズ性
- 制限あり
- 完全自由
/* 5. ホバーハイライト */
.kz-dl-05 .kz-dl-row:hover dd { background: #fff5e6; transition: 0.2s; }
パターンB:スマホで縦積みになるテーブル 5選
HTMLに kz-dl-stack を追加すると、PCでは横並びですが、スマホで見ると自動的に「縦並びのカード型」に変形します。
※デモはスマホサイズにウィンドウを縮めて確認してください。
6. シンプル縦積み
- 会社名
- 株式会社サンプル
- 所在地
- 岐阜県岐阜市〇〇
/* 6. シンプル縦積みベース */
.kz-dl-06 dt { background: #e9ecef; }
7. スペック表風(下線のみ)
- サイズ
- 幅50cm × 高さ100cm
- 重量
- 約1.5kg
/* 7. スペック表風 */
.kz-dl-07 .kz-dl-row { border: none; border-bottom: 2px solid #ffdb58; border-radius: 0; }
8. ダーク見出し
- 対応OS
- Windows / macOS
- メモリ容量
- 16GB以上推奨
/* 8. ダーク見出し */
.kz-dl-08 dt { background: #333; color: #fff; }
9. 浮き出るボックス型
- 基本セット
- 本体+専用ケース付属
- 保証期間
- 購入日から1年間
/* 9. 浮き出るボックス型 */
.kz-dl-09 .kz-dl-row { box-shadow: 0 4px 6px rgba(0,0,0,0.1); border: none; }
10. カラフルストライプ
- メリット1
- 初期費用が完全無料
- メリット2
- 最短即日で開通可能
- メリット3
- 高額キャッシュバックあり
/* 10. カラフルストライプ */
.kz-dl-10 .kz-dl-row:nth-child(even) dt { background: #ffe8e8; color: #d32f2f; }
.kz-dl-10 .kz-dl-row:nth-child(odd) dt { background: #e8f4ff; color: #0056b3; }
【必須】ベース用の共通CSS
以下のコードをWordPressの「追加CSS」に一度だけ貼り付けておいてください。
/* =========================================
レスポンシブdlテーブル 共通ベースCSS
========================================= */
/* 横スクロール用枠 */
.kz-dl-wrap {
width: 100%;
overflow-x: auto;
margin-bottom: 2em;
-webkit-overflow-scrolling: touch;
}
/* ベーススタイル */
.kz-dl-table {
display: flex;
flex-direction: column;
min-width: 500px;
margin: 0; padding: 0;
border-top: 1px solid #ddd;
border-left: 1px solid #ddd;
background: #fff;
}
.kz-dl-row {
display: flex;
flex-direction: row;
width: 100%;
}
.kz-dl-table dt,
.kz-dl-table dd {
flex: 1;
margin: 0;
padding: 12px 15px;
border-right: 1px solid #ddd;
border-bottom: 1px solid #ddd;
box-sizing: border-box;
color: #333;
}
.kz-dl-table dt { background: #f4f4f4; font-weight: bold; }
/* スマホ用縦積み(カード型)切り替え */
@media screen and (max-width: 600px) {
.kz-dl-stack {
min-width: 100%;
border: none;
background: transparent;
}
.kz-dl-stack .kz-dl-row {
flex-direction: column;
margin-bottom: 15px;
border: 1px solid #ccc;
border-radius: 5px;
overflow: hidden;
background: #fff;
}
.kz-dl-stack dt, .kz-dl-stack dd { border-right: none; width: 100%; }
.kz-dl-stack dt { border-bottom: 1px solid #ccc; }
.kz-dl-stack dd { border-bottom: 1px solid #eee; }
.kz-dl-stack dd:last-child { border-bottom: none; }
}
まとめ
本来の「表(table)」ではなく「定義リスト(dl)」と「Flexbox」を組み合わせることで、スマホ対応が簡単になるだけでなく、テーマのCSS干渉も防げるという一石二鳥のテクニックです。ぜひご自身のサイトで使い分けてみてください!
