Bootstrap5 スクロールスパイ(Scrollspy)
スクロールスパイ(Scrollspy)プラグインは、自動更新ナビゲーションプラグインです。スクロールバーの位置に応じて、対応するナビゲーションターゲットを自動的に更新します。基本的な実装は、スクロールに伴って動作します。
スクロールスパイの作成方法
以下の例では、スクロールスパイの作成方法を示しています:
例
<!--スクロール可能な領域-->
<body data-bs-spy="scroll" data-bs-target=".navbar" data-bs-offset="50">
<!--ナビゲーションバー - <a> 要素は、指定されたスクロール領域にジャンプするために使用されます-->
<nav class="navbar navbar-expand-sm bg-dark navbar-dark fixed-top">
...
<ul class="navbar-nav">
<li><a href="#section1">Section 1</a></li>
...
</nav>
<!-- Section 1 -->
<div id="section1">
<h1>Section 1</h1>
<p>Try to scroll this page and look at the navigation bar while scrolling!</p>
</div>
...
</body>
試してみる »
例の解説
監視したい要素(通常は body)に追加しますdata-bs-spy="scroll" 。
次に追加しますdata-bs-target属性。その値はナビゲーションバーの id または class です(.navbar)。これにより、スクロール可能な領域に関連付けることができます。
スクロール可能な項目要素の id に注意してください(<div id="section1">)は、ナビゲーションバーのリンクオプションと一致している必要があります(<a href="../index.html">)。
オプションdata-bs-offset属性は、スクロール位置を計算する際に、上部からのオフセットピクセルを指定します。デフォルトは 10 px です。
相対配置を設定する:使用するdata-spy="scroll"の要素は、その CSSpositionプロパティを設定することで"relative"機能するようになります。
以下の例では、垂直スクロールスパイを設定しています:
例
<div class="row">
<div class="col-4">
<nav id="navbar-example3" class="navbar navbar-light bg-light flex-column align-items-stretch p-3">
<a class="navbar-brand" href="#">Navbar</a>
<nav class="nav nav-pills flex-column">
<a class="nav-link" href="#item-1">Item 1</a>
<nav class="nav nav-pills flex-column">
<a class="nav-link ms-3 my-1" href="#item-1-1">Item 1-1</a>
<a class="nav-link ms-3 my-1" href="#item-1-2">Item 1-2</a>
</nav>
<a class="nav-link" href="#item-2">Item 2</a>
<a class="nav-link active" href="#item-3">Item 3</a>
<nav class="nav nav-pills flex-column">
<a class="nav-link ms-3 my-1" href="#item-3-1">Item 3-1</a>
<a class="nav-link ms-3 my-1 active" href="#item-3-2">Item 3-2</a>
</nav>
</nav>
</nav>
</div>
<div class="col-8">
<div data-bs-spy="scroll" data-bs-target="#navbar-example3" data-bs-offset="0" class="scrollspy-example-2" tabindex="0">
<h4 id="item-1">Item 1</h4>
<p>...</p>
<h5 id="item-1-1">Item 1-1</h5>
<p>...</p>
<h5 id="item-1-2">Item 1-2</h5>
<p>...</p>
<h4 id="item-2">Item 2</h4>
<p>...</p>
<h4 id="item-3">Item 3</h4>
<p>...</p>
<h5 id="item-3-1">Item 3-1</h5>
<p>...</p>
<h5 id="item-3-2">Item 3-2</h5>
<p>...</p>
</div>
</div>
</div>
試してみる »
リストグループ形式:
例
<div id="list-example" class="list-group">
<a class="list-group-item list-group-item-action" href="#list-item-1">Item 1</a>
<a class="list-group-item list-group-item-action" href="#list-item-2">Item 2</a>
<a class="list-group-item list-group-item-action" href="#list-item-3">Item 3</a>
<a class="list-group-item list-group-item-action" href="#list-item-4">Item 4</a>
</div>
<div data-bs-spy="scroll" data-bs-target="#list-example" data-bs-offset="0" class="scrollspy-example" tabindex="0">
<h4 id="list-item-1">Item 1</h4>
<p>...</p>
<h4 id="list-item-2">Item 2</h4>
<p>...</p>
<h4 id="list-item-3">Item 3</h4>
<p>...</p>
<h4 id="list-item-4">Item 4</h4>
<p>...</p>
</div>
試してみる »