这是一种解决方案。.header
它依赖.content-inner
于.content
. .header
显示为position:fixed
直到达到滚动阈值,此时将添加一个类.content
并.header
切换回它,position:static
以便它回到页面的常规流程中。
.content-inner
是必要的,因为当回到静态定位时,我们需要减少margin-top
以腾出空间。.header
jsFiddle
HTML
<div class="banner"></div>
<div class="content">
<div class="header"></div>
<div class="content-inner">
...
</div>
</div>
CSS
body,
html {
margin:0;
padding:0;
}
.banner {
position:fixed;
z-index:-1;
left:0;
right:0;
top:100px;
height:300px;
background-color:#F00;
}
.content {
margin-top:400px;
background-color:#FFF;
position:relative;
}
.content.fuse {
margin-top:300px;
}
.content-inner {
background-color:#FFF;
}
.header {
position:fixed;
height:100px;
background-color:#00F;
left:0;
top:0;
right:0;
}
.content.fuse .header {
position:static;
}
JS
$(window).scroll(function(e) {
if ($(window).scrollTop() < 300)
$('.content').removeClass('fuse');
else
$('.content').addClass('fuse');
});