【JavaScript】スムーズスクロールを実装してみる

スポンサーリンク
スムーズスクロールアイキャッチ プログラミング

こんにちは!セミマサです。

JavaScriptを使ってスムーズスクロールを実装してみたので作り方をまとめておきます!

デモサイト

今回のデモサイトになります。ChromeFirefoxで動作確認済み。

HTML

今回のHTMLです。

リンク元jumpクラスを指定します。

リンク先となる場所にはlinkクラスを指定しておきます。

topクラスを指定した要素は後述するトップへ戻るスクリプト用です。

CSS

今回のCSSです。

JavaScript

スクロール用スクリプト

今回のメインとなるスクリプトです。

querySelectorAllを使ってlinkクラスのリストをlink_listへ、jumpクラスのリストをjump_listへ格納しています。

・for文を使ってjump_list内の 各要素にクリックイベントを追加しています。

Destination関数

スクロール先を判定するスクリプトです。

①:クリックされたjumpクラスを持つ要素にclickedクラスを付与します。

②:for文を用いてクリックされた要素が何番目か調べます。※clickedクラスの有無で判定します。

③:Scroll関数に②で取得した番号を渡します。

Scroll関数

スムーズスクロールを行う関数です。

①:Destination関数から渡された番号に対応したリンク先の位置を取得し、Destination_topに格納します。

②:scrollTo関数を使ってスクロールさせます。移動先はDestination_topを指定します。behaviorsmoothを指定するとスムーズスクロールになります

トップに戻るスクリプト

スクロール用スクリプトと仕組みはだいたい同じです。

querySelectorAllを使ってtopクラスのリストをtop_listへ格納します。

・for文でtop_list内の 各要素にクリックイベントを追加します。

・scrollTo関数を使ってスクロールさせます。移動先を0にしてあげればOK。

おわりに

今回はスクロール先・スクロール元が増えても対応できるようなスムーズスクロール用スクリプトを書いてみました。

タイトルとURLをコピーしました