スクロール進捗バー

インタラクション Easy #scroll #progress #bar #fixed #indicator

スクロール進捗バーは、ページの一番上に固定された細い帯で、読者が今どこまで読み進めたかを横幅の伸びで示すパーツです。仕組みはシンプルで、 scroll イベントのたびに現在のスクロール量を「文書全体の高さからウィンドウ高さを引いた値」で割り、その割合を width のパーセントに反映します。

▶ プレビュー

解説

スクロール進捗バーは、ページの一番上に固定された細い帯で、読者が今どこまで読み進めたかを横幅の伸びで示すパーツです。仕組みはシンプルで、scroll イベントのたびに現在のスクロール量を「文書全体の高さからウィンドウ高さを引いた値」で割り、その割合を width のパーセントに反映します。バー自体は position:fixed と高い z-index で常に最前面に残り、linear-gradient で青から緑へ色が流れるようにしています。

使うと効く場面

  • 長文の記事・ブログ・利用規約など、読了率を意識させたいページ
  • 1 カラムの縦長ランディングページで現在地の目安を出したいとき
  • ドキュメントやマニュアルで「残りどれくらいか」を直感的に伝えたいとき

カスタマイズは background のグラデーションを変えればブランド色に合わせられ、height で太さ、transition の値で追従の滑らかさを調整できます。パフォーマンス面ではイベントが連続して発火するため、重い処理を足すなら間引き(スロットリング)を検討してください。装飾目的の要素なので、スクリーンリーダーには読ませない扱いで問題ありません。

使用例・適したシーン

  • LP の演出強化
  • 記事の読了率向上
  • ストーリーテリング表現

よくある質問

バーの色を自分のサイトに合わせたいです
CSS の background に指定した linear-gradient の 2 色を変えるだけで色を差し替えられます。単色にしたい場合はグラデーションをやめて background に 1 色を指定してください。
スクロールしてもバーが動かないことがあります
進捗の計算は文書全体の高さを基準にしているため、ページの中身が画面より短いと割る値がゼロに近くなり伸びません。スクロールできる高さがあるページで動作することを確認してください。
追加日:2026-05-27
← すべてのスニペットへ戻る