我正在建立一个单页网站,基本上是4个大型div。第一个是着陆区。当用户向下滚动页面ID时,就像从第二个div的顶部调用导航菜单一样。然后该菜单将固定在窗口的顶部。当div在滚动时击中窗口顶部时,最好的方法是什么?任何有关最佳方法的建议将不胜感激!请参阅基本页面结构的小提琴。
http://jsfiddle.net/aartese/3kRVm/11/
<body>
<div class="row"><!--landing section -->
<div class="col-md-12 landing">Landing</div>
</div> <!-- /landing section -->
<div class="row"><!--about section -->
<div class="col-md-12 about">About</div>
</div><!-- /about section -->
<div class="row"><!-- professional profile section -->
<div class="col-md-12 professional">Professional</div>
</div><!-- /professional profile section -->
<div class="row"> <!-- contact section -->
<div class="col-md-12 contact">Contact</div>
</div> <!-- /contact section -->
</body>
答案 0 :(得分:3)
使用$(window).scrollTop()检查div offset()。top。
$(window).scroll(function(){
if($(window).scrollTop() >= $('#sample').offset().top){
$('#sample').addClass('black');
}else{
$('#sample').removeClass('black');
}
})
以下是演示:Demo
答案 1 :(得分:1)
我认为这对你来说可能是一个很好的解决方案
HTML:
<div id="menu">top menu </div>
的CSS:
#menu {
width : 800px;
height : 50px;
background-color:blue;
position: fixed;
display : none;
}
脚本:
$(document).scroll(function() {
$('#menu').toggle($(this).scrollTop() > 80);
});
您现在可以在jquery中添加动画选项。
答案 2 :(得分:1)
感谢streetcoder让我朝着正确的方向前进。我略微修改了他的解决方案:
$(document).scroll(function() {
var divHeight = $('.landingBackground').height();
$('.navbar').toggle($(this).scrollTop() > divHeight);
});
这将获得第一个主div(.landingBackground)的高度。然后,当您滚动时,它会根据该高度切换菜单。
答案 3 :(得分:0)
我不确定我得到你想要的东西.......
About-Div是否一直都在修复?在这种情况下,你会想要你的位置:css的fixes-property。
如果你只想在滚动后通过你的第一个div来修复它你必须确定divs大小然后chekc(通过Javascript)如果你通过document.body.scrollTop
到达底部