JavaScriptでスクロールに応じて要素を表示・非表示する方法
JavaScriptでスクロールに応じて要素を表示・非表示する方法
現在のウェブサイトは、スクロールするとアイテムが表示されたり非表示になったりする機能が使われることが多いです。本記事では、JavaScriptのスクロールイベントを使って要素を表示・非表示する方法を解説します。
実装のポイント
スクロールによって、要素を表示したり非表示にする場合は、一般的に次の歩が必要です。
- HTMLとCSSの準備 … 表示・非表示を制御するためのスタイルを設定する。
- JavaScriptのコード …
scroll
イベントでスクロール位置を検出し、条件を満たしたら要素を表示・非表示する。
HTMLとCSSの準備
まず、HTMLとCSSでベースを作成します。
HTML
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>スクロールで表示・非表示</title>
<style>
body {
height: 2000px; /* スクロール用の高さ */
}
#target {
opacity: 0; /* 初期は非表示 */
transition: opacity 1s ease-in-out; /* フェードイン効果 */
background-color: lightblue;
text-align: center;
padding: 20px;
margin-top: 1000px; /* スクロール位置 */
}
#target.visible {
opacity: 1; /* 表示するとき */
}
</style>
</head>
<body>
<h1>スクロールで要素を表示・非表示する方法</h1>
<p>スクロールして要素を表示、トップで再度非表示にします。</p>
<div id="target">ここで表示されます!</div>
<script>
document.addEventListener("DOMContentLoaded", function () {
const target = document.getElementById("target");
const targetPosition = target.offsetTop - window.innerHeight / 2;
window.addEventListener("scroll", function () {
const scrollPosition = window.scrollY;
// 条件を満たしたら表示
if (scrollPosition > targetPosition) {
target.classList.add("visible");
}
// トップに戻ったら非表示
else {
target.classList.remove("visible");
}
});
});
</script>
</body>
</html>
JavaScriptの解説
scroll
イベントの正使用
window.addEventListener("scroll", ...)
でスクロールを検出します。
- 要素の表示条件を設定
scrollY
の値と要素の位置を比較して、visible
クラスを加えます。
- トップに戻ったら非表示する動作
- 条件を満たさない場合は、
classList.remove("visible")
でクラスを削除します。
- CSSのアニメーション効果
opacity
を利用し、表示・非表示にフェード効果を適用します。
動作の確認
- ページをロードし、スクロールして位置を確認します。
- 要素が指定の位置に達すると、フェードインしながら表示されます。
- スクロールを戻すと、要素が再び非表示になります。
まとめ
JavaScriptのscroll
イベントを使うと、要素の表示・非表示を簡単に制御できます。
この技術は、アイテムのロードアニメーションやショーケースでよく使われる技術です。
ローディングをキャッシュで制御する方法
1月 15, 2025独自のマウスカーソルを作成してウェブページを魅力的に!
1月 12, 2025JavaScriptの基本!Objectと主要メソッドの詳細解説
12月 10, 2024