ウェブページでのスクロール進捗を視覚的に表示することは、ユーザーにとって便利な情報提供の方法です。この記事では、スクロール進捗をプログレスバーと数字進捗表示の2つの方法で実装する方法を初心者向けに解説します。シンプルなコードで、どちらの機能も簡単に実装でき、さらにカスタマイズも可能です。
スクロール進捗を示すプログレスバー
スクロールに合わせて進捗を示すプログレスバーは、ユーザーがページ内でどれだけスクロールしたかを視覚的に表示する便利な方法です。プログレスバーの幅は、スクロールの進行具合に応じて変化します。
HTML構造
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>スクロール進捗バー</title>
<link rel="stylesheet" href="styles.css">
</head>
<body>
<!-- プログレスバー -->
<div id="progress-bar"></div>
<div class="content">
<section>セクション 1</section>
<section>セクション 2</section>
<section>セクション 3</section>
<section>セクション 4</section>
</div>
<script src="script.js"></script>
</body>
</html>
CSSスタイル
body {
font-family: Arial, sans-serif;
margin: 0;
padding: 0;
}
#progress-bar {
position: fixed;
top: 0;
left: 0;
height: 5px;
background-color: #4caf50;
z-index: 9999;
}
section {
height: 100vh;
background-color: #f0f0f0;
display: flex;
justify-content: center;
align-items: center;
font-size: 24px;
}
JavaScriptでスクロール進捗を計算
window.addEventListener('scroll', function() {
// ページ全体の高さ
const documentHeight = document.documentElement.scrollHeight - window.innerHeight;
// 現在のスクロール位置
const scrollPosition = window.scrollY;
// スクロール位置に対する進捗を計算
const scrollProgress = (scrollPosition / documentHeight) * 100;
// プログレスバーの幅を更新
document.getElementById('progress-bar').style.width = scrollProgress + '%';
});
サンプル
See the Pen ProgressBar by kasasagi_kmnmc (@kasasagi_kmnmc) on CodePen.
数字でスクロール進捗を表示
次に、スクロール進捗を数字として表示する方法を紹介します。スクロールに合わせて、ページ上部に進捗率をパーセンテージ(例:50%)として表示するシンプルな機能です。
HTML構造
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>スクロール進捗表示</title>
<link rel="stylesheet" href="styles.css">
</head>
<body>
<!-- スクロール進捗表示 -->
<div id="progress-container">
<span id="progress-text">0%</span>
</div>
<div class="content">
<section>セクション 1</section>
<section>セクション 2</section>
<section>セクション 3</section>
<section>セクション 4</section>
</div>
<script src="script.js"></script>
</body>
</html>
CSSスタイル
body {
font-family: Arial, sans-serif;
margin: 0;
padding: 0;
}
#progress-container {
position: fixed;
top: 10px;
left: 50%;
transform: translateX(-50%);
background-color: rgba(0, 0, 0, 0.8);
color: white;
font-size: 20px;
padding: 10px 20px;
border-radius: 5px;
z-index: 9999;
}
section {
height: 100vh;
background-color: #f0f0f0;
display: flex;
justify-content: center;
align-items: center;
font-size: 24px;
}
JavaScriptでスクロール進捗を計算
window.addEventListener('scroll', function() {
// ページ全体の高さ
const documentHeight = document.documentElement.scrollHeight - window.innerHeight;
// 現在のスクロール位置
const scrollPosition = window.scrollY;
// スクロール位置に対する進捗を計算
const scrollProgress = (scrollPosition / documentHeight) * 100;
// 進捗を数字として表示
document.getElementById('progress-text').textContent = Math.floor(scrollProgress) + '%';
});
サンプル
See the Pen Progress by kasasagi_kmnmc (@kasasagi_kmnmc) on CodePen.
カスタマイズ可能な部分
CSSを変更することで、自分のサイトに合わせることが可能ですので興味がある方はカスタマイズしてみてください。
まとめ
この記事では、スクロール進捗を示すプログレスバーと数字で進捗を表示する方法の2つを紹介しました。どちらの方法も簡単に実装でき、カスタマイズがしやすいので、初心者でもすぐに導入することができます。どちらを使用するかは、ページデザインやユーザー体験に合わせて選んでください。
どちらの方法も、ユーザーがページ内でどれだけスクロールしたかをわかりやすく示すため、特に長いページでは便利です。ぜひ、ウェブサイトに追加して、ユーザーにスクロール進捗を視覚的に伝えてみてください!