所以我有一個垂直滾動網站的'網頁'的方式。當用戶停止滾動時,我希望瀏覽器對齊瀏覽最多的頁面。jQuery動畫頁面捕捉循環滾動結束
我有一個方法來找到哪個元素是inview,並使用一個簡單的插件我有一個事件,當滾動停止時觸發。
我遇到的問題是如何正確使用它。
我使用瀏覽器動畫滾動到滾動停止處的inview頁面的頂部。然而,這會啓動另一個滾動並重新啓動一切,導致一些奇怪的不斷滾動的錯誤並導致它在頁面中跳躍。
有沒有人有任何不同的方式來實現這一點,以避免循環的想法?我現在真的很困難。
下面的代碼。並感謝您的任何建議。
$(window).bind('scrollstop', function(e){
//this grabs the ID of the div containing my h1 element. This is how I decide which 'page' is inview
var inview = '#' + $('.section-header:in-viewport:first').parent().parent().attr('id');
//then I grab the distance from the top, so that it can be scrolled to
var this_pos = $(inview).offset().top;
//finally I animate the page to scroll to the top of the inview element.
$('html > body').animate({'scrollTop' : this_pos}, 200).delay(1000);
});
這是沒有任何影響。根本沒有滾動(滾動結束)。 (除非我把它放在錯誤的地方?我只是取代了整個'動畫'行... – josh
好吧,因爲我不知道你的整個代碼是什麼樣的,看看scrollTop文檔,也許它會引導你朝着正確的方向前進:http://api.jquery.com/scrollTop/ –
你能解釋一下背後的邏輯嗎?inview offset減去體偏移量(大概是0?),再加上body scrolltop(0也是?)。應該說,這不是頁面動畫的問題,它會在每次滾動結束時觸發,然後它滾動到位置,然後再次觸發它,從而引發一個循環。 – josh