こんにちは、福岡のホームページ制作シンス株式会社の越水です。
例えば横スクロールできるエリアに各ページへリンクするサムネイルを並べてナビゲーションにするときってありますよね、あったんです。
横幅のあるウインドウでサイトを見ていれば良いけど、スマートフォンなどで見た時はスワイプで横スクロールさせたいとか、そういう時。
その時に特定のサムネイルはスクロールエリアの中央に持ってきて表示させたいケースがありました。

つまり、現在見ているページのサムネイルは中央配置にしたい時など、その横スクロール可能エリアをあらかじめ決まった数値でスクロールさせてやれば良いわけです。
もちろん最初や最後の隅っこにあるサムネイルは、それ以上スクロールしようがなく中央配置できないので、画面端でも最初に表示されていればOKとします。
HTMLは次のコードようなものを想定。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | <div class="thumbWrap"> <ul class="thumbList"> <li><a href=""><img src="images/thumb01.png" alt=""></a></li> <li><a href=""><img src="images/thumb02.png" alt=""></a></li> <li class="current"><a href=""><img src="images/thumb03.png" alt=""></a></li> <li><a href=""><img src="images/thumb04.png" alt=""></a></li> <li><a href=""><img src="images/thumb05.png" alt=""></a></li> <li><a href=""><img src="images/thumb06.png" alt=""></a></li> <li><a href=""><img src="images/thumb07.png" alt=""></a></li> <li><a href=""><img src="images/thumb08.png" alt=""></a></li> <li><a href=""><img src="images/thumb09.png" alt=""></a></li> <li><a href=""><img src="images/thumb10.png" alt=""></a></li> </ul> </div> |
スマホ表示時のCSSは次のように。下記のコードはscssファイルでの記述になります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | .thumbWrap{ overflow-x:scroll; -webkit-overflow-scrolling: touch; .thumbList { width: 590px; //li要素の幅と間のmarginを合計した数値 overflow: hidden; li { float: left; width: 50px; height: 50px; margin-right: 10px; &:last-child { margin-right: 0; } } .current { img { border: 2px solid #004290; } } } } |
最後にjQueryをこんな風に書きました。
1 2 3 4 5 6 | $(window).load(function() { var myTarget = $(".current"); var myIndex = $(".thumbList li").index(myTarget); var scrollvalue = 60 * myIndex; $('.thumbWrap').scrollLeft(scrollvalue); }); |
横スクロールさせて真ん中まで持ってきたいli要素に.currentなどのクラスを与え、そのli要素が何番目かを調べてその分だけ横スクロールをさせています。
これでページを表示させた時にli.currentが真ん中に配置されるはずです。
と、ここまで書いていてCodePen載せたほうがわかりやすいな、と思ったので後で時間があるときにCodePen貼り付けておきます。
以上、横スクロール可能なエリアであらかじめ決まった幅だけスクロールさせておきたい時のjQueryの書き方でした。
中小企業のホームページ制作やサイトリニューアルならシンス株式会社まで。












