【jQuery】ページ内リンクをス滑らかなムーズスクロールに変更する
※本ページのリンクにはプロモーションが含まれています。
こんにちは、Ryohei(@ityryohei)です!
本記事では、jQueryを使ってページ内リンクをスムーズスクロールに変更する方法をご紹介しています。
ページ内リンクを滑らかにスクロールするようにしたいんだけど、どうすればいいんだろう?
上記の疑問にお答えします。
では、解説していきます。jQueryを読み込む
本記事の内容はjQueryを使用しているため、jQuery本体のファイルを読み込む必要があります。ここではCDNを利用してjQuery本来のファイルを読み込みます。
CDNはContents Delivery Network(コンテンツ・デリバリー・ネットワーク)の略称で、ネットワーク経由で提供されるウェブコンテンツを指します。ネットワークに接続されている機器であれば気軽に利用することができます。CDNには有料、無料のものがありますが、jQueryのライブラリファイルは無料で利用できます。
jQueryの本体ファイルは下記の記述で読み込むことができます。
<script src="https://code.jquery.com/jquery-3.6.0.js"></script>
これで前準備が整いましたので、本題のスムーズスクロールを解説していきます。
発着点とスクロールスピードを設定する
まずはスクリプトをご紹介します。下記はid属性にbuttonという値を持つ要素をクリックすると、id属性にtargetを持つ要素の位置まで滑らかにスクロールするスクリプトです。
<script src="https://code.jquery.com/jquery-3.6.0.js"></script> <script> $(document).ready(function(){ var target= $('#target').offset().top; $('#button').click(function(){ $('html,body').animate({ scrollTop : target}, 'slow'); return false; }); }); </script>
target
の変数に移動先の要素を指定します。#button
にはクリックイベントを設定する要素をセレクターで指定します。{ scrollTop : 移動先(上で指定した変数) } の要素とすることで、ボタンをクリックした際に指定した要素まで滑らかにスクロールすることができます。slow
の部分にスクロールスピードを指定することができ、指定できる値には下記があります。
- slow
- fast
- ミリ秒(1秒 = 1000)
指定した発着点をHTMLで記述する
今回はbuttonタグとh1タグを使って記述してみます。buttonタグをクリックするとh1タグの場所までゆっくりと移動するようにします。
<button id="button">これをクリックすると</button> <h1 id="landing-point">ここまで移動する</h1>
以下サンプルです。コピペでも動くと思いますので、さくっと実装したいときなどにお使い下さい。
<html> <head> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script> <script><!-- $(document).ready(function(){ var landing = $('#landing-point').offset().top; $('#button').click(function(){ $('html,body').animate({ scrollTop : landing}, 'slow'); return false; }); }); // --> </script> <style> #button{padding: 20px; width: 100%;} #blank-space{height: 2000px;} #landing-point{text-align: center;} </style> </head> <body> <button id="button">これをクリックすると</button> <div id="blank-space"></div> <h1 id="landing-point">ここまで移動する</h1> <div id="blank-space"></div> </body> </html>
デモから動きが確認できます。
JavaScriptを基礎からしっかりと学びたい方へ
下記の参考書がおすすめです。私がJavaScript入門時に購入した書籍で、基礎から応用まで多様なサンプルを用いて解説されています。ページ数は多いですが、内容が伴っているのですらすら読めます。腰を据えて学びたい方に最良の一冊となっています。