お店のサイトや企業のサイトでよく使われるtableタグ。表を表示する事は多々ありますよね。
会社概要や商品概要、スペック表示等々。
ただこのtableタグ、PCでは綺麗に表示できますがスマートフォンになると横幅を大きく超えたり、文字幅が極端に狭くなりとても見づらくなったりします。
今回ご紹介するCSSは、PCでは通常通り、スマートフォンでは横スクロールし表示するという方法です。
この方法は、私が良く使いテンプレートして使っているタグです。
レスポンシブ対応のtableタグ
html
まずは、htmlです。tableタグに任意のクラス名を付与し、外包するDIVタグにtable-scrollを付与します。
<div class="tbl_scroll"> <table class="tbl"> <tr> <th>見出し</th> <td>テキストテキストテキスト</td> </tr> <tr> <th>見出し</th> <td>テキストテキストテキスト</td> </tr> <tr> <th>見出し</th> <td>テキストテキストテキスト</td> </tr> </table> </div>
CSS
CSSです。ここでは横幅を仮に500pxとします。この幅は任意数値となります、運営するサイトのページ幅をはみ出さない程度で指定してください。スマートフォンでもこの指定サイズ幅で表示となります。
また可読性を高めるため偶数行の背景色を変更し、th幅は改行させたくないので横幅を指定しております。この辺りは任意で。
.tbl {
border-collapse: collapse;
border: 1px solid #ccc;
width:500px; /* テーブル幅 */
}
.tbl tr:nth-child(odd){
background:#fafafa;
}
.tbl th {
background:#E5E5E5;
color:#222;
font-weight:bold;
border: 1px solid #ccc;
padding:5px;
width:50px; /* th幅 */
}
.tbl td {
border: 1px solid #ccc;
padding:5px;
}
.tbl_scroll {
overflow-x: auto;
white-space: nowrap;
}
/* スクロールバー */
.tbl_scroll::-webkit-scrollbar {
height: 15px;
}
.tbl_scroll::-webkit-scrollbar-track {
border-radius: 5px;
background: #eee;
}
.tbl_scroll::-webkit-scrollbar-thumb {
border-radius: 5px;
background: #666;
}
表示確認
■PCの場合

■スマートフォンの場合

スマートフォンの場合、テーブル幅が機種の横幅を超える場合横スクロールが表示されます。下部のスクロールバーは少し太めに設定しておくとスクロールがあることがユーザーに伝わり易いですね。
