今回は、「下にスクロールしたら消えて上にスクロールしたらheaderが表示される実装」を紹介します。
【JavaScript】下にスクロールしたら消えて上にスクロールしたらheaderが表示される実装
完成形はこちら。
See the Pen
Untitled by ゆーじろー (@yuji64)
on CodePen.
上にスクロールしたらheaderが表示されることが分かるでしょう。
HTML
<header class="header">
<div class="header__inner">
<div class="header__logo">
<h1>headerです</h1>
</div>
</div>
</header>
<div class="main-view"></div>
<div class="boxs">
<div class="box">
<h2>ボックス1です。</h2>
</div>
<div class="box">
<h2>ボックス2です。</h2>
</div>
<div class="box">
<h2>ボックス3です。</h2>
</div>
</div>
headerとmain-view、そして下にスクロールできるようにboxを用意しました。
CSS
.header {
background: rgba(158,134,134,0.7);
padding: 20px;
position: fixed;
top: 0;
transition: .5s;
width: 100%;
z-index: 999;
&__inner {
display: flex;
align-items: center;
max-width: 1000px;
margin: 0 auto;
justify-content: center;
}
&__logo {
h1 {
font-size: 1.6rem;
}
}
}
.header.hide {
transform: translateY(-100%);
}
.main-view {
background-color: sienna;
height: 500px;
}
.boxs {
max-width: 1000px;
margin: 0 auto;
padding: 100px 20px;
.box {
height: 500px;
background-color: skyblue;
text-align: center;
line-height: 500px;
font-size: 1.6rem;
margin-bottom: 80px;
}
}
今回はscssを使ってCSSコードを書きました。
headerはhideクラスがついたらブラウザから消えるようにします。
JavaScript
jQueryを使うので、以下のCDNをまずbodyの閉じタグ直前に書きましょう。
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
そしてコードはこちら。
var startPos = 0, winScrollTop = 0;
$(window).on('scroll', function () {
winScrollTop = $(this).scrollTop();
if (winScrollTop >= startPos) {
$('.header').addClass('hide');
} else {
$('.header').removeClass('hide');
}
startPos = winScrollTop;
});
下にスクロールしたらheaderが消え、上にスクロールしたらhideクラスが取れてheaderがブラウザに表示されるようにしました。
まとめ
以上が、「下にスクロールしたら消えて上にスクロールしたらheaderが表示される実装」でした。
コピペでも使える実装なので、是非参考にしてみてください!



