トップへ戻るボタンの動きが遅い!CSSとJavaScriptの干渉を解決する方法

トップへ戻るボタンの動きが遅い!CSSとJavaScriptの干渉を解決する方法

「トップへ戻る」ボタンをクリックしたとき、スムーススクロールの動きが遅いと感じたことはありませんか?
その原因の多くは、CSSのscroll-behavior: smooth;とJavaScript(特にjQuery)を使ったスムーススクロールが干渉していることにあります。

この記事では、この問題の原因を解説し、CSSを削除してJavaScriptでスムーススクロールを実現する方法を紹介します。

問題の原因: CSSとJavaScriptの干渉

CSSのscroll-behavior: smooth;とJavaScriptのスムーススクロールは、どちらもスクロール動作を制御します。しかし、これらが同時に動作すると、ブラウザで処理が重複し、スクロール動作が遅くなる、または不安定になることがあります。

解決策: CSSを削除してJavaScriptを利用する

問題を解決するには、CSSのscroll-behavior: smooth;を削除し、JavaScriptでスムーススクロールを実装します。以下の手順に従って設定を行いましょう。

1. CSSからscroll-behavior: smooth;を削除する

まず、以下のように指定されているCSSコードを削除します。

CSS
html {
  scroll-behavior: smooth;
}

2. JavaScriptでスムーススクロールを実装する

次に、JavaScriptでスムーススクロールを設定します。以下のコードを追加してください。

JavaScript
$(document).ready(function () {
  // ページ読み込み時、URLにハッシュがある場合の処理
  if (window.location.hash) {
    var target = $(window.location.hash); // URLのハッシュをターゲットとして取得
    if (target.length) {
      $('html, body').animate(
        { scrollTop: target.offset().top },
        300, // スクロール時間
        'swing' // イージング
      );
    }
  }

  // 通常のクリック時のスムーススクロール
  $('a[href^="#"]').on('click', function (e) {
    var targetId = $(this).attr('href');
    var target = $(targetId);

    if (target.length) {
      e.preventDefault(); // デフォルトのリンク動作を無効化
      $('html, body').animate(
        { scrollTop: target.offset().top },
        300, // スクロール時間
        'swing' // イージング
      );
    }
  });
});

コードのポイント

  1. ページ読み込み時の処理
    URLにハッシュ(例: #section)が含まれている場合、該当セクションまでスムーススクロールします。
  2. アンカーリンクのクリック時
    アンカーリンク(例: <a href="#section">)をクリックした際に、ターゲット要素までスムーススクロールを実行します。

まとめ

CSSとJavaScriptのスムーススクロールが干渉することで、スクロールの動きが遅くなることがあります。この問題を解決するには、CSSのscroll-behavior: smooth;を削除し、JavaScriptでスムーススクロールを実装するのが効果的です。

これで「トップへ戻る」ボタンやアンカーリンクのスクロール動作がスムーズになり、ユーザー体験を向上させることができます。

制作のご相談・ご依頼はこちらから!

Author

WARACRO(ワラクロ)

2018年に起業し、Webデザイナー・WebディレクターとしてWordPress案件を中心にWeb制作のお仕事をしています。
このブログでは、Webサイト制作に関する情報をお届けしています。

HTML/CSS学習におすすめの書籍

Amazonの読み放題サービスKindle Unlimited無料体験キャンペーン実施中!

Amazon Kindle Unlimited 公式
Webデザイン学習におすすめの講座
To Top