TL,DR
table
タグを囲むdiv
にoverflow-x: auto
を設定する。float
を利用して左右に分けていたものをflex
でつくりなおす。- 横スクロールさせるには、あらかじめ
table
の長さを多めに設定する必要がある。
目次
やりたいこと
以下のような、最初の列にth
タグが並ぶタイプのマークアップのときに
スマホ表示した際に縦表示したい。
<table> <thead> <tr> <th>年度</th> <th>2018</th> <th>2019</th> </tr> </thead> <tbody> <tr> <th>従業員人数(人)</th> <th>有給休暇取得率</th> <th>時間外労働時間(年間平均)</th> </tr> <tr> <td>1,000</td> <td>70.1%</td> <td>194時間</td> </tr> </tbody> </table>
それをおこなうに当たって、下記サイトを参考にしたのだが、
thead
とtbody
を左右に分ける際にfloat
を利用していたため、これをflex
に書き換えたいのだ。
実際にやったこと
縦並びにする
thead
とtbody
をflex
で横並びにする
table { display: flex; }
thead
・tbody
内のセルたちを縦並びにするためにdisplay:block
を指定する
tr, th, td { display: block; }
tbody
内のセルのみ横並びにするためflex
を設定する
tbody tr { display: flex; }
見た目を整える
width
の設定
thead { width: 10%; } tbody { width: 90%; } th, td { display: block; width: 100%; }
テーブルを横スクロールさせる
- スクロールさせるために
table
タグにdiv
タグを被せる
<div class="container"> <table>...</table> </div>
div
にoverflow-x
を指定する
.container { overflow-x: auto; }
- テーブルに
width
を指定する(表示するディスプレイサイズよりも大きな値を指定することでスクロールさせることができる)
table { width: 800px; }
おわり
成果物(実際に書いたコード)
CodePen
See the Pen table layout practice 1 by itsumoonazicode (@itsumoonazicode) on CodePen.