【jQuery】ページトップへ戻るボタンの作り方【フェードイン・アニメーション|CodePen付き】

ページトップへ戻るボタンのjQuery解説のサムネイル
SIM

こんにちは、SIMです。
今日はjQueryでページトップへ戻るボタンの作り方を紹介します。

今回紹介するページトップへ戻るボタンは、普段は非表示で下にスクロールした時だけフェードインアニメーションで現れるタイプです。

そして、ボタンを押すと指定のスピードでページトップへスクロールアップします。

SIM

実際、どういう動きをするかは、下にCodePenを置いておくのでご確認下さい。

See the Pen PageTop Button by s sim (@s-sim) on CodePen.

目次

ページトップボタンを作る下準備

リセットCSSのCDN

SIM

リセットCSSの種類が違うと表示が同じにならないのでご注意下さい。

このリセットCSSへのパスを書く場所はHTMLのheadタグ内ですCSS関連のファイルの一番上に書いて下さい超重要)。

  <!-- reset.css destyle -->
  <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/destyle.css@1.0.15/destyle.css" />

jQueryのCDN

SIM

jQueryのCDNはHTMLのbody閉じタグ直上に書いてください。

  <!-- jQueryのCDNへのパス -->
  <script src="https://code.jquery.com/jquery-3.6.1.min.js"
    integrity="sha256-o88AwQnZB+VDvE9tvIXrMQaPlFFSUTR+nldQm1LuPXQ=" crossorigin="anonymous"></script>
  
</body>
SIM

そして、自分のサイト用のJavaScript(jQuery)ファイルへのパスもその下に書くのを忘れずに!

パスは個人個人で違うと思うので、適宜変更してください。下のコードは一例です。

  <!-- jQueryのCDNへのパス -->
  <script src="https://code.jquery.com/jquery-3.6.1.min.js"
    integrity="sha256-o88AwQnZB+VDvE9tvIXrMQaPlFFSUTR+nldQm1LuPXQ=" crossorigin="anonymous"></script>

  <!-- このサイトのスクリプトへのパス -->
  <script src="./script.js"></script>
</body>

HTMLの書き方|ページトップボタン

SIM

HTMLの構造は下のとおりで、コード自体はかなり短いです。

「上に戻るボタン」のコードを書く場所ですが、私はいつもfooterタグの直上に書きます

  <!-- 上に戻るボタン(全ページ共通パーツ) -->
  <div id="page_top">
    <a class="c-up-to-btn_a" href="#">
      <img class="c-up-to-btn_img"
        src="https://shimizu-create.com/wp-content/uploads/2024/03/アセット-1@4x.png" alt="上に戻るボタン">     
    </a>      
  </div>
  <!-- 以下、footer -->

これらのコードのうち、jQueryの制御に直接関係しているタグは一番上の「id=”page_top”」のdivタグです。このid=”page_top”でjQueryアニメーションを動かします

CSSの書き方|ページトップボタン

SIM

CSSのコードも非常にシンプルで短いです。

/* ------------------ */
/* 上に戻るボタン */
/* ------------------ */
/*  ボタン関係の部品を全部囲うタグ:ここのidがjQueryの動作と連動する */
#page_top {
  position: fixed;
  bottom: 60px;
  right: 20px;
  opacity: 0.5;
}
/* ボタン画像のサイズ指定 */
.c-up-to-btn_img{
  width: 50px;
  height: 50px;
}

HTMLのところで書いた「div id=”page_top”」タグのスタイルですが、position: fixed;で特定の位置に固定しておきます。

この例では、ページ下端から60px、右端から20pxの位置に表示させるように設定しています。

ここは好みで変えて下さい。

jQueryの書き方|ページトップボタン

SIM

jQureyのコードも型がある程度決まっているので、基本コピペでOKです。

// 上へ戻るボタン
$(function(){
  var pagetop = $('#page_top');
  // 普段はボタン非表示
  pagetop.hide();
  // 100px スクロールしたらボタン表示(フェードインで) 
  $(window).scroll(function () {
     if ($(this).scrollTop() > 100) {
          pagetop.fadeIn();
     // そうじゃない場合は非表示(フェードアウトで)      
     } else {
          pagetop.fadeOut();
     }
  });
  // ボタンをクリックしたら500ミリ秒かけてページ上部(0pxの位置)までスクロールアップで移動
  pagetop.click(function () {
     $('body, html').animate({ scrollTop: 0 }, 500);
     return false;
  });
});
SIM

一応、jQueryの各コードの説明はコメントアウトで書いておいたとおりですが、好みで変更できるので方法を下にまとめておきました。

ページトップボタンの設定方法
  • どのくらいスクロールしたらボタンをフェードイン表示させるか?:「if ($(this).scrollTop() > 100) 」の100pxを好みで変えて下さい。これがページトップボタンを表示させるまでのスクロール量(ピクセル単位)になります。
  • ページトップボタンをクリックしたらどのくらいのスピードでページトップまでスクロールアップさせるか?:「$(‘body, html’).animate({ scrollTop: 0 }, 500)」の500ミリ秒(0.5秒)を好みの数字に変えて下さい。これがボタンを押してからページトップへ戻るまでの時間(ミリ秒単位)になります。
  • ページトップボタンをクリックしたらどの位置までスクロールアップさせるか?:同じく「$(‘body, html’).animate({ scrollTop: 0 }, 500)」のscrollTop: 0の数字(この場合はページ上端から0ピクセルの位置)を好みの値に変えてください。ピクセル単位です。
SIM

ページトップボタンのCodePenをもう一度、貼っておくので、動作やJSの他にHTMLやCSSのコードなども確認してみて下さい。

See the Pen PageTop Button by s sim (@s-sim) on CodePen.

まとめ

SIM

以上、ページトップに戻るボタンのjQueryアニメーションについて紹介しました。コード自体は非常にシンプルですので、是非コピペで使ってみて下さい。

ページトップボタンのバリエーションについても、そのうち追記したいと思います。

では!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

■清水WEB制作代表
■コーディング:WordPress(オリジナルテーマ制作等)・HTML・Sass・FLOCSS・JavaScript(jQuery)等
■集客力:YouTube/Instagram/ブログでそれぞれ登録者数16000人/フォロワー13000人/月間最大アクセス50000PVの集客実績があります
■文章作成:博士号所有、会社員時代は科学雑誌に寄稿していたので文章作成も得意です
■写真技術:Amazon Kindle出版で、写真集・撮影編集解説書を5冊好評発売中です

目次