スクロールするとヘッダーサイズが変わるアニメーションを実装する方法
スクロールさせると、ヘッダーサイズが変わるアニメーションを実装する方法です。
初心者のかたが読んでもわかるようにできる限り細分化して解説していますが、うまく実装できなければコメントください。
どんな動作か確認したいかたは、まずはデモをご覧ください。
コピペだけで実装できる
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');