2012-01-12 7 views
0

body/htmlフレームを上/上に任意の量だけ移動してスクロールをシミュレートしたいと思います。私は、jQueryスクロールまたはアニメーション機能、.scroll().animate()を知っています。しかし、私は私の計画はただでスクロールをシミュレートするために、今ある javascriptを使って上のスクロールをシミュレートするsetInterval&clearInterval

..アニメーションが発生し、まだ進行中であり、 .scrollが呼び出されたときに、それは animatescrollTop財産と .scroll() jQueryのネイティブ関数の間の紛争を引き起こしたので、それを使用しないことを決定しました可能な限り滑らかなbody/htmlフレームをできるだけ滑らかに動かしてから、ネイティブの scrollが発生すると( .scroll()が呼び出される)STOP(間隔をクリア)します。

私は.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アニメーションは2つの異なるスクロールイベントであることが判明しました。私がしていることは、ネイティブのスクロール(DOMMousewheelとマウスホイール)から来る特定のスクロールイベントを聞いて、それが起こるとアニメーションを停止します。返信をありがとう!

0

Y値を変更している間にwindow.scrollTo(0,Y)を使用してください。

+0

これは$(document).scrollイベントをトリガーします。そのため、一度だけ行います。 – Archer

+0

これを実行しているときに$(document).scrollから終了するフラグを設定します。 –

+0

window.scrollルートを終了する場合、window.scrollBy(x、y)は現在の位置を取得して計算するよりも良いでしょう。 – Archer

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); 
}); 
関連する問題