スムーススクロールの実装

プログラミング

こちらの練習サイト内のページで実装してみました。

完成形:https://skblogwp.com/practice/javascript/article_001/

HTML

HTMLでは、目次に各セクションへのリンク先を指定するようにします。

<ol>
                            <li><a href="#self-introduction">自己紹介</a></li>
                            <li><a href="#work-experience">職務経歴</a></li>
                            <li><a href="#qualification">主な保有資格</a></li>
                            <li><a href="#difficulty">困難だった課題</a></li>
                        </ol>

jQuery

$(function () {
    
    //start
    $('a[href^="#"]').on("click", function(event) { //href属性が「#」で始まるリンク(ページ内アンカーリンク)を選択します。
        event.preventDefault(); // デフォルトのリンク動作を無効化
        var target = $($(this).attr("href")); // リンク先の要素を取得

        if (target.length) {
            var position;

            // SP処理
            if (window.matchMedia('(max-width: 959px)').matches) {
                position = target.offset().top; // スクロール先(target)の位置を取得
            } 
            // PC処理
            else if (window.matchMedia('(min-width:960px)').matches) {
                position = target.offset().top - $("header").innerHeight(); // ヘッダーの高さを引いた位置を取得(PCはヘッダーが固定されてスクロールに追従するため。)
            }

            $("html, body").animate({ scrollTop: position }, 500, "swing"); // アニメーションでスクロール
        }
    });
    //finish

});

コメント

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