スクロールするとヘッダーサイズが変わるアニメーションを実装する方法

スクロールさせると、ヘッダーサイズが変わるアニメーションを実装する方法です。
初心者のかたが読んでもわかるようにできる限り細分化して解説していますが、うまく実装できなければコメントください。

どんな動作か確認したいかたは、まずはデモをご覧ください。

コピペだけで実装できる

HTML

<header>ヘッダー</header>
<main>コンテンツ</main>
<footer>フッター</footer>

CSS

body {
	margin: 0;
}
header {
	position: fixed;
	padding: 3em 0;
	width: 100%;
	font-size: 2em;
	text-align: center;
	color: #fff;
	background-color: #000;
	transition: .3s;
}
main {
	height: 2000px;
	text-align: center;
	background-color: #fff;
}
footer {
	padding: 3em 0;
	text-align: center;
	color: #fff;
	background-color: #000;
}
.is-animation {
	padding: 2em 0;
	font-size: 1em;
}

JavaScript

$(function() {
	$(window).on('load scroll', function() {
		var scrollPos = $(this).scrollTop();
		if ( scrollPos > 100 ) {
			$('header').addClass('is-animation');
		} else {
			$('header').removeClass('is-animation');
		}
	});
});	

誰でもわかる詳しい解説

JavaScript

まず、JavaScriptの2行目でページ読み込み完了時とスクロールしたときに動かすというように書いています。

$(window).on('load scroll', function() {

3行目は、ブラウザの画面をスクロールした時の位置(スクロール量)を取得して、scrollPosに代入しています。

var scrollPos = $(this).scrollTop();

4行目は、「3行目で取得したスクロール位置が100pxより大きければ」という条件文です。

if ( scrollPos > 100 ) {

5行目で、上記条件に一致する場合の動作として、header要素にクラス名を付与するというように書いています。

$('header').addClass('is-animation');

6行目は、「上記条件以外の場合」と書いて、7行目で、header要素にクラス名を付与するというように書いています。

$('header').removeClass('is-animation');

ウェブサイト制作や動画制作のご相談はお気軽に

今すぐ問い合わせる

お問い合わせ
お問い合わせ・ご相談

お見積りのご依頼やそのほかのお仕事のご相談などはお問い合わせフォームからお問い合わせください。

お問い合わせする
会社案内ダウンロード

弊社の会社案内をPDFでご用意しております。社内での検討時などにご利用ください。

ダウンロードする

お電話でのお問い合わせはこちら

※電話番号はおかけ間違いのないようご注意ください。
※セールス目的のお電話はご遠慮ください。