2012-01-12 20 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); 
}); 
相關問題