Bootstrap5|JavaScriptコンポーネント「スクロールスパイ」を使ってみた

Bootstrap5|JavaScriptコンポーネント「スクロールスパイ」を使ってみた

記事
コラム

はじめに

Bootstrap5 には、JavaScript を使った便利な UI コンポーネントが多数用意されています。
その中でも「スクロールスパイ(Scrollspy)」は、ページ内のスクロール位置に応じて ナビゲーションの状態を自動で更新してくれる仕組み です。

長いページやセクションが多いページで、現在位置を視覚的に示すのに役立ちます。
今回は、このスクロールスパイを実際に触ってみて、どんな場面で使えるのか、どう実装するのかを整理しました。

スクロールスパイとは何か

スクロールスパイ(Scrollspy)は、ページのスクロール位置を監視し、対応するナビゲーション項目を自動でアクティブ表示する機能 です。

ドキュメントサイトや長文記事でよく見られる UI で、ユーザーが「今どこを読んでいるのか」を把握しやすくなります。

どんな場面で活用できるのか

スクロールスパイが活きる場面は次のとおりです。

長い記事・技術ドキュメント
ランディングページ(LP)
プロダクト紹介ページ
ポートフォリオサイト

基本的な実装方法

Bootstrap5 のスクロールスパイは、HTML 属性だけで動作させる方法と、JavaScript で初期化する方法があります。
ここでは、もっともシンプルな HTML 属性版を紹介します。

① ナビゲーションを用意する
<nav id="navbar-example" class="nav flex-column">
  <a class="nav-link" href="#section1">セクション1</a>
  <a class="nav-link" href="#section2">セクション2</a>
  <a class="nav-link" href="#section3">セクション3</a>
</nav>

② スクロール対象のコンテナに属性を付与
<div data-bs-spy="scroll" data-bs-target="#navbar-example" class="scrollspy-example">
  <h4 id="section1">セクション1</h4>
  <p>…</p>

  <h4 id="section2">セクション2</h4>
  <p>…</p>

  <h4 id="section3">セクション3</h4>
  <p>…</p>
</div>

③ JavaScript で初期化(必要に応じて)
const scrollSpy = new bootstrap.ScrollSpy(document.body, {
  target: '#navbar-example'
});

実際に触ってみて感じたこと

HTML 属性だけで動くため、実装がとても簡単
長いページでの迷子防止に効果的
スクロール対象の高さ調整が必要な場合がある
固定ナビゲーションと組み合わせるとさらに便利

実装例(シンプル版)

insta041.png

<nav id="navbar-example2" class="nav nav-pills flex-column mb-3">
 <a class="nav-link" href="#item-1">項目1</a>
 <a class="nav-link" href="#item-2">項目2</a>
 <a class="nav-link" href="#item-3">項目3</a>
</nav>

<div data-bs-spy="scroll" data-bs-target="#navbar-example2" class="scrollspy-example" tabindex="0">
 <h4 id="item-1">項目1</h4>
 <p>…</p>

 <h4 id="item-2">項目2</h4>
 <p>…</p>

 <h4 id="item-3">項目3</h4>
 <p>…</p>
</div>

まとめ

スクロールスパイは、スクロール位置に応じてナビゲーションを更新する便利な機能です。
長いページやセクションが多いページで UX を向上でき、技術ブログや LP など幅広い場面で活用できます。

Bootstrap の JavaScript コンポーネントの中でも、導入しやすく効果が分かりやすい機能だと感じました。
サービス数40万件のスキルマーケット、あなたにぴったりのサービスを探す ココナラコンテンツマーケット ノウハウ記事・テンプレート・デザイン素材はこちら