はじめに
スマホで表を表示したときに、横スクロールがめんどくさいと感じたことはないでしょうか?
今回は、ボタンを押したときに所定位置まで自動で横スクロールする機能をJavaScriptで実装する方法をご紹介します。
実装
ここでは、横スクロール機能の実例としてシフト表を作成します。
表の仕様は以下です。
-
1番左側の列に「氏名」の項目を用意
-
1行目に曜日の項目を用意
-
表の幅 > 画面幅 となったとき、表が横スクロールできるようになる
-
「氏名」の列はスクロールされない(一番左の列で固定)
-
表上部の曜日ボタンを押すと指定した曜日まで表が自動スクロールする
見た目の作成
まずはhtmlとCSSで表の見た目を整えます。
ul.scroll-toggle li
が横スクロールを発火させるボタンになってます。
thの各カラム左端の位置を取得
次に、 thead
の中の th
の左端の位置を取得します。これは各カラムへのスクロール位置を指定するためです。
ボタンをクリックしたときの挙動
次に、ボタンをクリックしたときに指定の位置にスクロールするように設定します。
表をスクロールしたときの挙動
最後に、表をスクロールしたとき、ボタンのハイライトが切り替わるように設定します。
完成形
完成形は以下のCodePenで確認できます。
(画面幅を狭めることで動きを確認することができます。)
まとめ
表の列が増えるとスマホサイズでの表示が見づらくなってしまいますが、この対処法を参考にしていただければと思います。
ぜひ試してみてください!