スクロールに追従するナビゲーションに「on」というクラスを追加および削除するためのjQueryコードです。
これにより、特定のクラスを持つ要素の範囲内にスクロールしたときに「on」クラスを追加し、その範囲外に出たら「on」クラスを削除します。
HTML
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Scroll Navigation</title> <link rel="stylesheet" href="style.css"> </head> <body> <nav id="nav">ナビゲーション</nav> <div class="content"> <section class="section">セクション1</section> <section class="section target">セクション2 (ターゲット)</section> <section class="section">セクション3</section> </div> <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script> <script src="script.js"></script> </body> </html> |
CSS
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
body { font-family: Arial, sans-serif; margin: 0; padding: 0; } nav { position: fixed; top: 0; width: 100%; background-color: #333; color: #fff; padding: 10px; text-align: center; z-index: 1000; transition: background-color 0.3s ease; } nav.on { background-color: #f00; } .content { padding-top: 60px; } .section { height: 100vh; border-bottom: 1px solid #ccc; display: flex; justify-content: center; align-items: center; font-size: 24px; } |
jQuery(script.js)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
$(document).ready(function() { const $nav = $('#nav'); const $target = $('.target'); $(window).on('scroll', function() { const scrollTop = $(window).scrollTop(); const targetTop = $target.offset().top; const targetBottom = targetTop + $target.outerHeight(); if (scrollTop >= targetTop && scrollTop < targetBottom) { $nav.addClass('on'); } else { $nav.removeClass('on'); } }); }); |
- HTML:
- 固定されたナビゲーションバーと複数のセクションを持つコンテンツを作成します。
- ターゲットとなるセクションにはクラス
target
を付けています。
- CSS:
- ナビゲーションバーを固定し、デフォルトのスタイルを設定します。
nav.on
クラスでナビゲーションバーの背景色を変更しています。- セクションのスタイルを設定しています。
- jQuery:
- ページの読み込みが完了したら、ナビゲーションバーとターゲットセクションを選択します。
- ウィンドウのスクロールイベントをリッスンし、スクロール位置とターゲットセクションの位置を比較します。
- 現在のスクロール位置がターゲットセクション内にある場合、ナビゲーションバーに
on
クラスを追加します。それ以外の場合は、on
クラスを削除します。
このコードを使用すると、ユーザーが特定の要素にスクロールしたときに、ナビゲーションバーがハイライトされるようになります。