ヘッダーを固定しているときに、ある程度スクロールしたら高さを縮小したいということがよくあるので、そのサンプルを作ってみます。
サンプルコード
HTML
<header class="header"> <div class="inner clearfix"> <div class="header-logo"><a href="">ロゴ</a></div> <nav class="header-nav"> <ul> <li><a href="">ナビ1</a></li> <li><a href="">ナビ2</a></li> <li><a href="">ナビ3</a></li> <li><a href="">ナビ4</a></li> <li><a href="">ナビ5</a></li> </ul> </nav> </div> </header>
CSS
/* 通常のヘッダー */
.header {
position: fixed;
width: 100%;
background: #ccc;
}
.header .inner {
width: 960px;
margin: 0 auto;
}
.header a {
display: block;
padding: 20px 0;
}
.header .header-logo {
float: left;
width: 300px;
}
.header .header-nav {
float: right;
width: 600px;
}
.header .header-nav li {
float: left;
width: 120px;
text-align: center;
}
/* スクロール後のヘッダー */
.header.fix a {
display: block;
padding: 5px 0;
}
JavaScript
$(function() {
headerAdjust('.header');
$(window).on('scroll', function() {
headerAdjust('.header');
});
});
// ヘッダーのサイズ調整
var adjustPoint = 20;
var adjustClass = 'fix';
function headerAdjust(tgt) {
var scrollTop = $(window).scrollTop();
if(scrollTop > adjustPoint) {
$(tgt).addClass(adjustClass);
} else {
$(tgt).removeClass(adjustClass);
}
}
スクロールでヘッダーを縮小するデモページ
あらかじめ縮小用のclassを準備しておいて、スクロール位置に応じてclassを付けたり外したりしています。
コメントが承認されるまで時間がかかります。