スクロールスパイのデモ : ナビゲーションバーへの設定例。
body
属性
data-spy="scroll"
data-target="#scrollspy-demo"
data-offset="56"
(⇒ 注1)nav.navbar.fixed-top.navbar-light
属性
id="scrollspy-demo"
style="background: rgba(222,222,222,0.6);"
(⇒ 注2)Scrollspy demo (1)
(⇒ ナビゲーションバー - ブランド表示)ul.nav.nav-pills
(⇒ ナビゲーションバー - ナビゲーション)
div.container
id="{位置ID}"
を設定するdata-offset="56"
はナビゲーションバーの高さ(px)。本ページはトップ固定ナビゲーションバーがあるため、スクロール位置計算の基準点がスクロールバーのすぐ下になるようにオフセット調整している。#
によるページ内ジャンプはナビゲーションバーを考慮せず常にページ先頭にスクロールするため、ターゲットがバーに隠れてしまう。この問題解決はやや難しい(オフィシャルデモの動作も同じで、解決にはたぶん iframe
が必要)。そこで妥協策として半透明バーを用い隠れた部分が透けて見えるようにして問題を緩和している。以下はスクロール用ダミーコンテンツ。ヘッダにはそれぞれ id="{位置ID}"
が設定されており、スクロールスパイがスクロール検出と表示の連動を行う。