2012-01-12 50 views
0

我想通过将body/html框架以任意数量移动到顶部/顶部来模拟滚动。我知道jQuery滚动或动画功能,.scroll().animate()。但我已经决定不当动画发生,目前仍在进行中和.scroll被调用使用它,因为它scrollTop财产之间animate引起的冲突和.scroll() jQuery的本地函数..现在使用javascript模拟顶部滚动条setInterval&clearInterval

我的计划是只模拟滚动将body/html帧尽可能平滑地移动到顶部,然后在发生本地scroll时(STOP)(清除间隔)(调用.scroll())。

当我调用.scroll()时,我能够停止setInterval动画,但我仍然无法将html对象移动到顶部,达到我希望它“滚动”的数量(这意味着我的代码只能部分工作) 。

这是我到目前为止有:

var scrollTop = //Some arbitrary value 
var fakeScroll = setInterval(function(){ 
     console.log(scrollTop); 
     var animObj = $('html,body'); 
     animObj.top = animObj.offset().top + scrollTop; 
    },500); 
    $(document).scroll(function(){ 
     clearInterval(fakeScroll); 
    }); 

欣赏任何建议/答案。谢谢!

回答

0

解决这个问题,而无需使用定时器。事实证明,本地滚动事件和jQuery动画是两个不同的滚动事件。我所做的几乎是监听来自本地滚动(DOMMousewheel和mousewheel)的特定滚动事件,然后在发生时停止动画。尽管谢谢你的答复!

0

只使用window.scrollTo(0,Y)而您更改Y值。

+0

虽然会触发$(document).scroll事件,所以它只会执行一次。 – Archer 2012-01-12 20:57:06

+0

设置一个标志,以便在运行时从$(document).scroll退出。 – 2012-01-12 21:05:22

+0

如果你沿着window.scroll路线走,那么window.scrollBy(x,y)比获取当前位置并对它进行计算要好。 – Archer 2012-01-12 21:15:40

0

这工作,但我不认为这是你在找什么,因为它是不滚动的页面 - 它的移动内容...

var scrollTop = 1; 
var fakeScroll = setInterval(function() { 
    console.log(scrollTop); 
    var animObj = $('html,body'); 
    animObj.offset({ top: animObj.offset().top - scrollTop }) 
}, 500); 
$(document).scroll(function() { 
    clearInterval(fakeScroll); 
}); 
相关问题