使用ブラウザ:Google Chrome
使用言語:HTML, CSS, JavaScript
使用ライブラリ:JQuery
開いた時は、上部にヘッダー①が表示されていますが、
スクロールでヘッダー①が隠れるタイミングでヘッダー②をアニメーションさせ表示させます。
ヘッダー②は上部固定にします。
またヘッダー①が見えるタイミングでヘッダー②を隠します。

以下コード
html
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="utf-8"> <title>ヘッダーサンプル</title> <!-- Style --> <link rel="stylesheet" type="text/css" href="styles.css"> <!-- Script --> <script src="https://code.jquery.com/jquery-3.2.1.min.js"></script> </head> <body> <header> <div id="home" class="header-btn"><a href="#">ホーム</a></div> <div id="help" class="header-btn"><a href="#">ヘルプ</a></div> <div id="register" class="header-btn"><a href="#">新規登録</a></div> <div id="login" class="header-btn"><a href="#">ログイン</a></div> </header> <header class="move-header hidden"> <div id="home" class="header-btn"><a href="#">ホーム</a></div> <div id="help" class="header-btn"><a href="#">ヘルプ</a></div> <div id="register" class="header-btn"><a href="#">新規登録</a></div> <div id="login" class="header-btn"><a href="#">ログイン</a></div> </header> <div id="main-container"> <div>テスト</div> <div>テスト</div> <div>テスト</div> ... </div> <script src="main.js"></script> </body> </html>
css
* {
padding: 0;
margin: 0;
}
header {
height: 80px;
width: 100%;
background-color: #D8D8D8;
}
header div {
padding: 7px;
width: 90px;
text-align: center;
}
header div a {
font-size: 18px;
color: #000;
text-decoration: none;
}
header div + div {
margin-right: 10px;
}
.move-header {
position: fixed;
top: -80px;
background: #A9F5D0;
}
.fixed {
position: fixed;
top: 0px;
}
.header-btn {
margin-top: 20px;
}
#home {
float: left;
}
#login, #register, #help {
float: right;
}
#main-container div {
font-size: 20px;
text-align: center;
}
.hidden {
display: none;
}
js
(function(){
'use strict';
$(window).scroll(function() {
var top = $(document).scrollTop();
if(top > 80) { // 移動用のヘッダーをアニメーションさせ表示させる
if($('.move-header').is(':animated') ||
!$('.move-header').hasClass('hidden')) {
return
}
$('.move-header').removeClass('hidden')
$('.move-header').animate(
{'top': '0px'},
200);
} else if(top <= 80) { // 移動用のヘッダーをアニメーションさせ非表示にさせる
if($('.move-header').is(':animated') ||
$('.move-header').hasClass('hidden')) {
return
}
$('.move-header').animate(
{'top': '-80px'},
200,
function() {
$('.move-header').addClass('hidden')
});
}
});
})();
以上です。