【JavaScript・CSS】スクロールの上下で表示・非表示を切り替える方法|固定ヘッダーの例

今回はJavaScript・CSSを利用し、スクロールの上下を判断して、要素の表示・非表示を切り替える簡単な例となります。

【JavaScript・CSS】スクロールの上下で表示・非表示を切り替える例

以下のJavaScript・CSSの例では、画面上部に固定したヘッダーを、下スクロール時には非表示、上スクロール時には表示させています。

See the Pen JavaScript scroll up down judgement sample by yic666kr (@yic666kr) on CodePen.

JavaScriptの簡単な説明

JavaScriptの簡単な説明となります。

以下のスクロールイベントでは、スクロール時に、現在と1つ前のスクロール位置を比較し、スクロールの上下を判断しています。

そして、スクロールの上下によって、ヘッダーの要素のclassの値を変更しています。

const fixedElm = document.getElementById('header');
let scrollPoint = 0; // 現在のスクロール位置をセットする変数
let lastPoint = 0; // 1つ前のスクロール位置をセットする変数

window.addEventListener("scroll",function(){
	
	scrollPoint = window.scrollY;
	
	if(scrollPoint > lastPoint){ // 下スクロールの場合
		fixedElm.classList.add('fixed-hide');
	}else{ // 上スクロールの場合
		fixedElm.classList.remove('fixed-hide');
	}
	
	lastPoint = scrollPoint;
});

要素のclassの値を扱う方法

要素のclassの値を扱う方法については、以下のリンク先を参考にしてみてください。

CSSの簡単な説明

CSSのコードの簡単な説明となります。

ヘッダーの要素は、JavaScriptを利用してclassの値fixed-hideを付与・削除しています。

それにより、topプロパティの値を変更してヘッダーの表示・非表示を切り替えています。また、transitionプロパティを指定して要素の変化をアニメーションさせています。

以下の箇所はヘッダーの要素に対してのCSSとなります。

#header{
	position: fixed;
	top: 0;
	z-index: 20;
	
	display: flex;
	justify-content: center;
	align-items: center;
	
	width: 100%;
	height: 45px;
	background-color: #aaa;
	transition: all 0.3s ease-out;
}
#header.fixed-hide{
	top: -45px;
}

コメント投稿コメント投稿欄を開く

コメントは項目欄(*は必須項目)を入力し、「コメントを送信」ボタンをクリックしてください。 (メールアドレスは公開されることはありません。コメントの公開は承認制となります。)

また、多忙によりコメントには返信できない場合があります。

Twitterで返信する場合はこちらから。