スキルアップを始める!

【JavaScript】固定されたフッターボタンを画面がスクロールしている時に非表示にさせる方法

JavaScript(ジャバスクリプト)
JavaScript(ジャバスクリプト)
この記事は約5分で読めます。

※記事中に広告情報を含みます。

\ワードプレスのスキルアップはこちら!/ WordPress入門読本

画面がスクロールしている時に固定されたフッターボタンを非表示にするには、JavaScript を使ってスクロールイベントを検知し、フッターボタンのスタイルを変更することができます。以下にその方法を示します。

HTML

まず、固定されたフッターボタンを HTML に追加します。

    <div class="footer-button" id="footerButton">フッターボタン</div>

CSS

CSSでフッターボタンを調整します。

        body {
font-family: Arial, sans-serif;
}
.content {
height: 2000px; /* スクロールのための高さを指定 */
padding: 20px;
background-color: #f9f9f9;
}
.footer-button {
position: fixed;
bottom: 0;
width: 100%;
text-align: center;
background-color: #333;
color: #fff;
padding: 10px;
transition: opacity 0.3s, visibility 0.3s;
visibility: visible;
}
.hidden {
opacity: 0;
visibility: hidden;
}

JavaScript

次に、JavaScript でスクロールイベントを処理し、フッターボタンの表示・非表示を制御します。

document.addEventListener('DOMContentLoaded', function() {
    var footerButton = document.getElementById('footerButton');
    var lastScrollTop = 0;

    window.addEventListener('scroll', function() {
        var currentScroll = window.pageYOffset || document.documentElement.scrollTop;

        console.log('現在のスクロール位置:', currentScroll); // デバッグ用
        console.log('最後のスクロール位置:', lastScrollTop); // デバッグ用

        if (currentScroll > lastScrollTop) {
            // スクロールダウン時
            footerButton.classList.add('hidden');
            console.log('スクロールダウン'); // デバッグ用
        } else {
            // スクロールアップ時
            footerButton.classList.remove('hidden');
            console.log('スクロールアップ'); // デバッグ用
        }

        lastScrollTop = currentScroll <= 0 ? 0 : currentScroll; // モバイルまたは負のスクロールに対応
    }, false);
});

説明

  1. HTML 部分: footer-button クラスを持つ固定フッターボタンを追加します。hidden クラスは非表示状態を定義しています。
  2. CSS 部分: footer-button クラスに固定位置とスタイルを指定し、hidden クラスに opacity: 0 を指定して非表示を実現しています。
  3. JavaScript 部分:
    • DOMContentLoaded イベントで DOM の読み込みが完了した時にスクリプトを実行します。
    • スクロールイベントをリスンし、現在のスクロール位置を取得します。
    • スクロールが下方向(スクロールダウン)の場合、hidden クラスを追加してボタンを非表示にします。
    • スクロールが上方向(スクロールアップ)の場合、hidden クラスを削除してボタンを表示します。

動作確認

スクロールを検証するために、ページにいくつかのコンテンツを追加してスクロール可能な状態を作成します。

       .content {
            height: 2000px; /* スクロールのための高さを指定 */
            padding: 20px;
            background-color: #f9f9f9;
        }
    <div class="content">
        <h1>スクロールの検証</h1>
        <p>このページにはスクロール可能なコンテンツがあります。スクロールしてフッターボタンの表示・非表示を確認してください。</p>
        <p>適当に長いテキストを追加します。</p>
        <p>...</p> <!-- ここに複数行のテキストを追加 -->
        <p>最後の段落です。スクロールをお楽しみください。</p>
    </div>

あとは、画面をスクロールしてフッターボタンが非表示になるかどうか検証します。

まとめ

このコードを使えば、スクロール時にフッターボタンが非表示になり、スクロールが止まると再表示されるようになります。

URLをコピーしました!