我正在尝试创建一个页面,顶部有两个固定的div(div1和div2),另一个div(div3),页面内容自然流向下方。当用户滚动并且div3到达div1的底部时,我希望两个div融合在一起并正常滚动。这个website具有我试图复制的确切行为。
我使用不同的z索引将div1和div3保持在div2之上,并在div1和div3触摸时检测到:
$(window).scroll(function(e) {
var calc = $("#div3").offset().top - $("#div1").height();
if ($(this).scrollTop() >= calc)
{
//fuse
}
else
{
//unfuse
}
});
但我无法弄清楚如何将div3和div1融合在一起。
谢谢:)
答案 0 :(得分:0)
这是一个解决方案。它依赖于.header
内的.content-inner
和.content
。 .header
显示为position:fixed
,直到达到滚动阈值,此时将一个类添加到.content
,.header
切换回position:static
,以便它返回页面的常规流程。
.content-inner
是必要的,因为我们需要减少margin-top
以便在.header
恢复静态定位时腾出空间。
<强> 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');
});