追従の解決策について紹介していきたいと思います。
追従って聞くとヘッダーやフッター、そして広告などさまざまな要素の追従がありますよね。
よく使われる追従ですがガタついたり思ったような動きにならなかったり色々な問題もあると思います。
追従ヘッダー
html
<header>
<div class="header-inner">
ヘッダー部分
</div>
</header>
css
header{width: 100%;}
.header-inner{
width: 100%;
height: 100px;
text-align: center;
background: #eee;
}
.fixed .header-inner{
position: fixed;
left: 0;
top: 0;
width: 100%;
}
jQuery
jQuery(function(){
jQuery(window).on("scroll", function() {
if (jQuery(window).scrollTop() > jQuery('header').height()) {
jQuery('body').addClass('fixed');
}else {
jQuery('body').removeClass('fixed');
}
});
});
サンプル
これで追従ヘッダーになりました。
ですが追従時にposition: fixed;させることでもともとあったヘッダーの高さがなくなり位置がズレたようになりますね。
解決策
css
header{
width: 100%;
height: 100px;
}
先ほどのcssに記載されていたheader要素のスタイルにヘッダー分の高さを入れてあげましょう。
そうすることで追従時にposition: fixed;されてももともとあったヘッダーの高さが維持されてズレることがなくなりました。
もし動作の違いが判らなければ2つのページを開いて確認してみてください。
コメント