HTML
HTMLの構造です。どこにでもあるシンプルなヘッダーって感じです。
今回はこのheader部分を固定します。
HTML
<header id="top-head">
<div class="inner">
<h1 class="logo">Fixed Navi</h1>
<nav id="global-nav">
<ul>
<li><a href="#">HOME</a></li>
<li><a href="#">PRODUCT</a></li>
<li><a href="#">WORKS</a></li>
<li><a href="#">COMPANY</a></li>
<li><a href="#">CONTACT</a></li>
</ul>
</nav>
</div>
</header>
jQuery
jQueryはスクロールすると header に fixed クラスを割り当てるだけです。
アニメーションはCSSで行います。
JavaScript
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<script>
(function($) {
$(function() {
var $header = $('#top-head');
$(window).scroll(function() {
if ($(window).scrollTop() > 50) {
$header.addClass('fixed');
} else {
$header.removeClass('fixed');
}
});
});
})(jQuery);
</script>
CSS
CSSはファーストビューのナビゲーションを普通に作って、jQueryで指定したクラス(fixed)で固定される狭いナビゲーションの2種類を作ります。
あとは変化のあるセレクタに transition を指定するだけです。
CSS
/* header *//* header */
#top-head {
position: fixed;
width: 100%;
margin: 0 auto;
padding: 30px 0 0;
line-height: 1;
}
#top-head:after {
content: "";
display: block;
height: 1px;
background: #fff;
width: 980px;
margin: 30px auto 0;
}
#top-head a,
#top-head {
color: #fff;
text-decoration: none;
}
#top-head .inner {
position: relative;
}
#top-head .logo {
float: left;
font-size: 32px;
}
#global-nav ul {
list-style: none;
position: absolute;
right: 0;
bottom: 0;
font-size: 14px;
}
#global-nav ul li {
float: left;
position: relative;
}
#global-nav ul li a {
padding: 0 30px;
}
/* transition */
#top-head,
#top-head:after,
#top-head .logo,
#global-nav ul li,
#global-nav ul li a {
transition: all 0.3s ease;
-webkit-transition: all 0.3s ease;
-moz-transition: all 0.3s ease;
-o-transition: all 0.3s ease;
}
/* Fixed */
#top-head.fixed {
padding-top: 15px;
background: rgba(255,255,255,.7);
}
#top-head.fixed .logo {
font-size: 24px;
color: #333;
}
#top-head.fixed:after {
width: 100%;
margin-top: 20px;
}
#top-head.fixed #global-nav ul li a {
color: #333;
padding: 0 20px;
}


