CSS, HTML, JavaScript, JQuery, Web開発

【Web開発サンプル】2種類のヘッダーを使う

使用ブラウザ: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')
			});
		}
	});

})();

以上です。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です