CSSだけで作るスクロールプログレスバー

スクロールプログレスバーは、ページのどこまで読まれているかを視覚的に示すUIです。UX向上や離脱防止に効果があります。
この記事では、JavaScriptを使わずにCSSだけで実現する方法を、初級〜上級に分けて紹介します。
目次
初級:固定プログレスバー
① 上部に固定するシンプルバー
.progress-bar {
position: fixed;
top: 0;
left: 0;
width: 50%;
height: 4px;
background: #3498db;
}まずは基本形。widthを変えることで進捗を表現します。
中級:CSSでスクロール連動
② linear-gradientで擬似的に表現
body {
background: linear-gradient(
to right,
#3498db 0%,
#3498db 50%,
transparent 50%,
transparent 100%
);
background-size: 200% 4px;
background-repeat: no-repeat;
background-position: top;
}背景グラデーションを使って、スクロール量に応じた表現を作るテクニックです。
上級:スクロール連動アニメーション
③ scroll-timelineを使ったプログレスバー
@keyframes progress {
from {
width: 0%;
}
to {
width: 100%;
}
}
.progress {
position: fixed;
top: 0;
left: 0;
height: 4px;
background: #e74c3c;
animation: progress linear;
animation-timeline: scroll();
}最新のCSS仕様を使った方法。JavaScriptなしでスクロールと連動します。
④ グラデーション+スムーズアニメーション
.progress-advanced {
position: fixed;
top: 0;
left: 0;
height: 4px;
width: 100%;
background: linear-gradient(
to right,
#3498db,
#9b59b6
);
transform-origin: left;
transform: scaleX(0);
z-index: 999;
animation: grow linear;
animation-timeline: scroll();
}
@keyframes grow {
to {
transform: scaleX(1);
}
}scaleXを使うことで、より滑らかな伸び方になります。
※このページに実装
まとめ
- スクロールプログレスバーはUX向上に効果的
- CSSだけでも実装可能(最新仕様含む)
- グラデーションやtransformでデザイン性を高められる
記事ページやLPで活用することで、ユーザーの離脱を防ぎやすくなります。










