使用javascript setInterval&模拟顶部滚动clearInterval

时间:2012-01-12 20:50:44

标签: javascript jquery animation setinterval

我想通过将body / html框架移动到顶部/向上任意数量来模拟滚动。我知道jQuery滚动或动画功能,.scroll().animate()。但是我决定不使用它,因为它在动画发生时仍然在进行scrollTop得到animate.scroll() jQuery本机函数之间的.scroll属性之间发生冲突称为..

我现在的计划是通过将body / html框架尽可能平滑地移动到顶部来模拟滚动,然后在发生本地scroll时停止(清除间隔){{{ 1}}被调用)。

我可以在调用.scroll()时停止setInterval动画,但我仍然无法将html对象移动到我想要“滚动”的数量(其中意味着我的代码只能部分工作)。

这是我到目前为止所做的:

.scroll()

感谢任何建议/答案。谢谢!

3 个答案:

答案 0 :(得分:0)

在更改Y值时使用window.scrollTo(0,Y)

答案 1 :(得分: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);
});

答案 2 :(得分:0)

在不使用计时器的情况下解决了此问题。事实证明,本机滚动事件和jQuery动画是两个不同的滚动事件。我所做的几乎是听取来自本机滚动(DOMMousewheel和鼠标滚轮)的特定滚动事件,然后当它发生时,我停止动画。谢谢你的回复!