jQueryでページトップに戻るボタンを実装する方法【jQuery】

最終更新日:

公開日:2025-01-27

ページ内に広告が含まれています。
jQueryでページトップに戻るボタンを実装する方法【jQuery】

最近は必ずと言っていいほど設置してある「ページトップへ戻る」ボタン。当サイトでも少しスクロールすると画面右下に表示されるようにしています。
クリックするとページの一番上にスムーススクロール(スルスルっと移動)する仕様がほとんどだと思いますが、今回はjQueryでこのページトップへ戻るボタンを実装する方法を解説していきます。

jQuery、jsファイルを読み込む

まずは、jQueryを動かすためにjQuery本体をCDNで読み込むか、ファイルをダウンロードして読み込む必要があります。詳しくは、jQueryの読み込み方法(導入方法)【jQuery】で解説していますのでご覧ください。

続いて、ページトップに戻るボタンの実装するjQueryを書き込む為のjsファイルを作成し読み込みます。

<script src="js/jquery-3.7.1.min.js"></script>
<script src="js/script.js"></script>

例として、今回はjQuery本体はダウンロードして読み込み、jsファイルは「script.js」としています。
これらをbodyの閉じタグ直前に記述し読み込みさせます。サイトの読み込み時に上から順番に読み込みをする為、scriptが最初の方にあると他の読み込みがすべて停止してしまう場合がある為です。

ページトップに戻るボタンの実装

次にページトップへ戻るボタンを実装していきます。
既にここまでスクロールしていると、画面左下に今回作成しているボタンが表示されているかと思います。表示されているボタンと照らし合わせて見ていただくと分かりやすいと思います。

<button class="pagetop" aria-label="ページトップへ戻る">
    <span>PAGE<br>TOP</span>
</button>
.pagetop {
    width: 60px;
    height: 60px;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 0;
    border: none;
    border-radius: 50%;
    background-color: #202124;
    appearance: none;
    outline: none;
    cursor: pointer;
    position: fixed;
    bottom: 20px;
    left: 20px;
    z-index: 10;
}
.pagetop span {
    font-size: 1.0rem;
    color: #FFF;
    transition: all 0.3s;
}
.pagetop span::before {
    content: "";
    width: 8px;
    height: 8px;
    display: block;
    margin: 0 auto 2px auto;
    border-top: 2px solid #FFF;
    border-right: 2px solid #FFF;
    box-sizing: border-box;
    transform: rotate(-45deg);
}
.pagetop:hover span {
    transform: translateY(-2px);
}
$(function(){
    const pageTop = $('.pagetop');
	pageTop.hide();
	pageTop.click(function(){
		$('body,html').animate({
            scrollTop: 0
        }, 500);
		return false;
	});
});

$(window).on('load scroll', function(){
	if ($(this).scrollTop() > 100) {
		$('.pagetop').fadeIn();
	} else {
		$('.pagetop').fadeOut();
	}
});

完成形は上記のようになります。
以下ではそれぞれのコードについて解説していきます。

HTML

buttonタグにaria-label属性を使用する事で、アクセシビリティ対応をしています。

CSS

今回のCSSのポイントは以下になります。

buttonタグのスタイルの初期化

buttonタグは初期化しないとスタイルがいろいろと付いているので必須になります。
主な初期化は以下のようになります。リセットCSSなどにあらかじめ組み込んでおくと楽になります。

button {
    padding: 0;
    border: none;
    background-color: transparent;
    appearance: none;
    outline: none;
    cursor: pointer;
}

spanタグの疑似要素(before)にくの字矢印を実装

疑似要素(before)に、borderで線をつけてtransform: rotate(-45deg);で回転させています。

buttonタグのhover時にspanタグをtransformプロパティで上にずらす

hover時にtransform: translateY(-2px);で上にずらす動作を付けています。

jQuery

$(function(){
    const pageTop = $('.pagetop');
	pageTop.hide();
	pageTop.click(function(){
		$('body,html').animate({
            scrollTop: 0
        }, 500);
		return false;
	});
});

上記は主にボタンクリック時の動作となります。
500」という数字はクリックされた際にページトップに移動するスピードになります。500で0.5秒となりますので好きなスピードに設定してあげてください。

$(window).on('load scroll', function(){
	if ($(this).scrollTop() > 100) {
		$('.pagetop').fadeIn();
	} else {
		$('.pagetop').fadeOut();
	}
});

上記のコードは、画面読み込み後・スクロール時にページトップから100px以上スクロールしていた場合にページトップへ戻るボタンを表示させる内容となります。

jQueryで最初にpageTop.hide();でページトップへ戻るボタンを非表示にしていますが、読み込み時に一瞬表示されるのが気になる場合はCSSのdisplay: none;で非表示にするようにしてください。
その場合、$(‘.pagetop’).fadeIn();display: block;になってしまいますので$(‘.pagetop’).fadeIn(300).css(‘display’,’flex’);というふうに変更してあげる必要があります。

さいごに

いかがでしたでしょうか。
今回は、jQueryでページトップに戻るボタンを実装する方法を解説しました。実務でもよく使用するものになりますので覚えておくと便利です。

おすすめ記事

当ブログ運営者 ヒデ

北海道札幌市在住のフリーランスでWeb制作を行っているヒデです。Webコーディング(HTML・CSS・JSなど)やWordpressのカスタマイズ等のテクニック、困った時に確認できる分かりやすい解説を目標にして情報を発信していければと思っています。プロフィールはこちら

当サイトに関するご意見・ご感想・ご要望または仕事のご依頼は以下のフォームよりお願い致します。

お問い合わせ お仕事のご依頼

各SNSのフォローはこちらから

PAGE TOP