2024/05/31
スクロールバーを上下に表示させる方法をご紹介!
横幅がはみ出た部分をスクロールできるようにしたいとき、高さがあるテーブルなどでは下のスクロールバーのみでは不便な場合があります。
そんなときに使える、CSS・Jqueryを使用し上下が連動するスクロールバーを実装する方法をご紹介します!
HTML
HTMLコードです。
クラス名”scrollbar”でスクロールバーを表示させています。
<div id="containar"> <div class="scrollbar" id="scrollbar"> <div class="bar_inner"></div> </div> <div class="scrollbox" id="scrollbox"> <div class="box_inner"> <table class="table"> <tr> <th>見出し1</th> <th>見出し2</th> <th>見出し3</th> <th>見出し4</th> <th>見出し5</th> <th>見出し6</th> <th>見出し7</th> <th>見出し8</th> <th>見出し9</th> <th>見出し10</th> </tr> <tr> <td>コンテンツ</td> <td>コンテンツ</td> <td>コンテンツ</td> <td>コンテンツ</td> <td>コンテンツ</td> <td>コンテンツ</td> <td>コンテンツ</td> <td>コンテンツ</td> <td>コンテンツ</td> <td>コンテンツ</td> </tr> <tr> <td>コンテンツ</td> <td>コンテンツ</td> <td>コンテンツ</td> <td>コンテンツ</td> <td>コンテンツ</td> <td>コンテンツ</td> <td>コンテンツ</td> <td>コンテンツ</td> <td>コンテンツ</td> <td>コンテンツ</td> </tr> <tr> <td>コンテンツ</td> <td>コンテンツ</td> <td>コンテンツ</td> <td>コンテンツ</td> <td>コンテンツ</td> <td>コンテンツ</td> <td>コンテンツ</td> <td>コンテンツ</td> <td>コンテンツ</td> <td>コンテンツ</td> </tr> <tr> <td>コンテンツ</td> <td>コンテンツ</td> <td>コンテンツ</td> <td>コンテンツ</td> <td>コンテンツ</td> <td>コンテンツ</td> <td>コンテンツ</td> <td>コンテンツ</td> <td>コンテンツ</td> <td>コンテンツ</td> </tr> </table> </div> </div> </div>
CSS
全体を囲っている#containarにwidthをつけ、.scrollboxに”overflow-x:scroll;”を設定することで下のスクロールバーを表示しています。
これだけでは上のスクロールバーは動作しません。
#containar { width: 500px; padding: 100px; } .scrollbar { width: 100%; overflow-x: scroll; overflow-y: hidden; } .bar_inner { height: 1px; } .scrollbox { width: 100%; margin-top: 5px; overflow-x: scroll; overflow-y: hidden; } .box_inner { margin-bottom: 5px; } table { min-width: 1000px; border-collapse: collapse; border-spacing: 0; border: 2px solid #979797; width: 100%; box-sizing: border-box; margin: 20px auto; } table th, table td { width: 10%; border: 2px solid #979797; text-align: center; }
Jquery
Jqueryで動作をさせます。
$(function () { $("#scrollbar, #scrollbox").on("scroll", function () { if ($(this).attr("id") === "scrollbar") { //scrollLeftでスクロール量を取得 $("#scrollbox").scrollLeft($(this).scrollLeft()); } else { $("#scrollbar").scrollLeft($(this).scrollLeft()); } }); //.tableの幅取得 var w = $('.table').width(); //.tableの幅を"bar_inner"のwidthとする $('.bar_inner').width(w); });
scrollLeftでスクロール量を取得し、上下が連動するようにしています。
また、$(‘.table’).width(); でテーブルの幅を取得し、上のスクロールバー”.bar_inner”のwidthに設定することでテーブルの内容を修正して幅が変わっても問題なく動作します。
まとめ
今回は4行の高さのないテーブルでしたが、もっと高さのある要素のときに使えると思います。
ぜひ覚えて実装してみてください!
コーディング業務のご依頼、ご相談の詳細についてはこちらから
最後までお読みいただき、ありがとうございました。
よろしければシェアしていただければ幸いです。
次の記事へ | 前の記事へ |
WEB業界ならqam!qam(カム)はWEB業界で働く人や興味がある人に役立つ情報サイトです。
マーケティングやデザイン、マークアップ(コーディング)、プログラム、トレンドなどの情報をqamライター陣が執筆。噛めば噛むほど(読めば読むほど)制作・開発や運営・運用、業界知識やノウハウを学ぶことができます。