我有一个基本上是四个div的网站 - 每个网站都设置为窗口的高度,这样整个文档就是窗口高度的四倍。如何“捕捉”滚动到最近的预定义位置?
的想法是,在一个div上点击一个“窗口高度”推进滚动 - 这工作得很好,像这样:
// on click event
if(cur_frame<number_slides){
scrolling = true;
$('html,body').animate({scrollTop:window_height*cur_frame},function(){
scrolling=false;
});
}
用户滚动后的页面手动然而,我喜欢将位置“捕捉”到窗口高度的最接近的倍数 - 因此给定的div再次集中在屏幕上。我尝试使用超时,盘算,一个小的延迟将保持它触发一千倍第二...
// on scroll event
clearTimeout(scroll_timer);
if(!scrolling) scroll_timer = setTimeout(function(){
if(cur_scroll!=window_height*(cur_frame-1)) {
scrolling = true;
$('html,body').stop().animate({scrollTop:window_height*(cur_frame-1)},function(){
scrolling = false;
});
}
},100); //20? 400? 1000?
...但不能攻击脚本争夺滚动位置的用户之间的平衡,或者是一个严重的延迟,从而破坏了“捕捉”效应。
任何建议如何实现?
一个问题......真的没有“滚动”的页面锚。 – Sparky
是的,我知道在哪里滚动 - 这个问题是一个平滑的'捕捉'效果。 –
页面锚点的全部点是捕捉到一个位置!它确实起作用,我在FF Chrome和IE上试了一下,然后才发布了答案。不能相信我被拒绝了! –