ウェブページやブログ記事で、なんだかんだ使用頻度の高い「table」を使った表レイアウトですが、PC とモバイルで見た目を変えた方が親切かもしれません。
例えば、セルが2つ並びの table レイアウトは、PC で見た時には横並びのほうが見やすいですが、モバイル表示をした場合、横並びにすると、ひとつひとつのセルが詰まってしまって、大変見づらくなってしまいます。
▼▼ 横並びだと、この様にセルが詰まって読みづらくなってしまいます。
▼▼ しかし、セルが縦並びになればどうでしょう?
このようにひとつひとつのセルが大変見やすくなります。
今回は「table セルのレイアウトを PC では横並び、モバイルでは縦並びになるように見た目を自動的に変更する方法」を紹介します。
これは CSS だけで簡単に設定できます。
table セルのレイアウトを PC とモバイルで変更する手順
メディアクエリを付加して簡単な CSS を施すだけ
table セルのレイアウトを PC とモバイルで変更する方法はとても簡単です。
もともとのテーブルレイアウト CSS があって、それにモバイルレイアウト用の CSS をメディアクエリを追加してあげるだけです。
1 2 3 | @media screen and (max-width: 640px) { } |
このメディアクエリは「640px まではこの CSS レイアウトを優先的に使用してね~」という記述をしいます。
このメディアクエリの間に、
1 | display: block; |
を入れるだけで table セルのレイアウトが PC とモバイルで違ったものになります。
以下、ちゃんと記述した CSS を掲載します。
1 2 3 4 5 6 7 8 9 10 11 | @media screen and (max-width: 640px) { .table-mobile { width: 100%; } .table-mobile th, .table-mobile td { width: auto; display: block; text-align: center; } } |
こんな感じで、th と td のスタイルに「display: block;」を追加するだけで、モバイルで見た時には縦並びになるように設定できます。
デモページを用意しました
table レイアウト(レスポンシブ)のデモ
table セルのレイアウトを PC とモバイルで変更しているデモを用意しました。
▼▼ table セルのレイアウト PC 版だと以下のように横並びになり、
▼▼ モバイル版だと、以下のように縦並びに切り替わります。
デモページは以下のリンクボタンから閲覧できます。
デモページの HTML と CSS コード
HTML コード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | <!DOCTYPE html> <html lang="jp"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width,initial-scale=1.0" /> <title>Document</title> <link rel="stylesheet" href="style.css"> </head> <body> <h1>テーブルレスポンシブ</h1> <table class="table-mobile"> <tr> <th>セル見出し</th> <td>PC やタブレットで見た時とスマホで見たときではテーブルのレイアウトが変更されます。</td> </tr> <tr> <th>セル見出し</th> <td>モバイルで見た時には、右セルが上になり、左セルが下になります。</td> </tr> <tr> <th>セル見出し</th> <td>ここにテキストが入ります。</td> </tr> <tr> <th>セル見出し</th> <td>ここにテキストが入ります。</td> </tr> <tr> <th>セル見出し</th> <td>ここにテキストが入ります。</td> </tr> <tr> <th>セル見出し</th> <td>ここにテキストが入ります。</td> </tr> <tr> <th>セル見出し</th> <td>ここにテキストが入ります。</td> </tr> </table> </body> </html> |
CSS コード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | table { margin:0 auto 50px; padding: 0; border-collapse: collapse; border-bottom: #dddddd 1px solid; width: 640px; } th { padding: 12px 20px; background-color: #F5f5f5; border: #dddddd 1px solid; vertical-align: middle; width: 30%; } td { padding: 12px 15px; border: #dddddd 1px solid; vertical-align: middle; } @media screen and (max-width: 640px) { .table-mobile { width: 100%; } .table-mobile th, .table-mobile td { width: auto; border-bottom: none; display: block; text-align: center; } .table-mobile td { text-align: left; } } |
あとがき
table セルのレイアウトは、メディアクエリに display: block; を追加するだけで、簡単に PC とモバイルの表示を切り替えることができます。
この手順は、セルの並びが多くなっても全然問題ないので重宝すると思います。