更新日:2018年9月19日
レスポンシブ対応する時に頭を悩ませる代表格といえば……
そうです、tableですね。
約2年半前の記事に【簡単実装】CSSのみでtableをレスポンシブ対応させる方法をご紹介致しましたが、ご好評を頂きましたので今回はその第二弾となります。
以前の記事の場合ですと、横に長いtableには対応することが出来ませんでしたが、今回はそれに対応させる方法のご紹介です。
CSSのみで実装可能ですで、スマホ時には横に常時スクロールバーが表示させて対応させます。
ちなみに完成するtableは下記の通りです。
試しにブラウザのウィンドウ幅を思いっきり狭めてみると、横に常時スクロールバーが表示されるのが分かります。
名前 | 年齢 | 毛色 | 趣味 | 身長 | 住処 | 宝物 | 一言 |
---|---|---|---|---|---|---|---|
トトロ | 1302歳 | 灰色 | オカリナ | 2m | オオクスの虚 | サツキから貰った傘 | 私の名前はトトロです。 |
それでは、上記のレスポンシブ対応したtableの作り方ですが、HTMLは例えば以下のように記述します。
名前 年齢 毛色 趣味 身長 住処 宝物 一言 トトロ 1302歳 灰色 オカリナ 2m オオクスの虚 サツキから貰った傘 私の名前はトトロです。メイちゃんが私の名前を聞き間違えたことにより、トトロという名前ですっかり世間に浸透してしまいましたが、本当の名前はミミンズクといいます。お友達には私をそのまんま小さくしたような姿をしているズクと、毛色が真っ白で半透明のミンがいます。いつも3匹は仲良しです。今日もお昼寝して過ごすことにします。
なんてことない普通のtableです。大事なポイントはtableを.tb_hyouを付与したdivで囲っているということだけです。
任意のtableを作成した後、classを付与したdivで囲ってあげればいいということです。
CSSは例えば以下のように記述します。
.tb_hyou table { font-size: 14px; } .tb_hyou table th, .tb_hyou td { padding: 5px; border: 1px solid #ddd; } .tb_hyou table th { text-align: center; color: #FFF; background-color: #333; }
これはtableの見た目を整える為の装飾用のCSSですので記述の必要はありませんが一応。
無視して頂いても大丈夫です。
では重要なCSSですが、以下のように記述します。
@media screen and (max-width: 480px) { .tb_hyou { overflow-x: scroll; } .tb_hyou::-webkit-scrollbar { height: 1px; } .tb_hyou::-webkit-scrollbar-track { background-color: #ccc; margin: 0 2px; border-radius: 5px; } .tb_hyou::-webkit-scrollbar-thumb { background-color: #666; border-radius: 5px; } .tb_hyou table { width: 700px; } }
.tb_hyou table {
width: 700px;
}
の700pxは任意の数値に変更して頂いて大丈夫です。
この場合、tableの幅を700pxに固定した上で、横に常時スクロールバーを表示させています。
これにて完成です。
これさえ知っていればどんなtableでもレスポンシブ対応可能になるかと思います。
お試し下さい。