2015-08-29 69 views
0

我創建了這個代碼,當用戶嘗試滾動時應該將頁面移動整個部分。當用戶試圖滾動時,jquery整個部分移動

$(window).on("scroll", function fff(event) { 
    var section; 
    $('.section_class').each(function() { 
     if ($(window).scrollTop() > ($(this).offset()['top'])) { 
      section = $(this).next(); 
     } 
    }); 
    $(window).off("scroll"); 
    $(window).scrollTo(section, { 
     duration: 1000, 
     done: function() { 
      $(window).on("scroll", fff(event)); 
     } 
    }); 

它應該像這樣工作:在滾動中,每個循環觸發並檢查用戶當前所看到的部分。然後頁面應該滾動到下一個(使用jQuery的scrollTo插件)。然而,這隻有一次,然後它只是阻止自己。

我懷疑當scrollTo動畫開始時,另一個滾動事件觸發並嘗試滾動到CURRENT部分。爲了避免這種情況,我試圖在動畫開始之前禁用事件,並在完成時再次啓用它,但這沒有幫助。

回答

0

如果我正確理解你想要的是一個捕捉行爲。有很多jQuery插件已經具有一定功能,您可以使用,例如:

+0

感謝這些iinks。但它也讓我錯誤地認爲我的代碼被破壞了。 – user3667832

+0

我認爲這個問題是由於fff函數的作用域。看到這裏的工作示例:https://jsbin.com/dikufaqoti/edit?html,css,js,output – MarcoReni

0

如果你打算使用全屏幕的部分,我會建議你去fullpage.js

您可以使用選項autoScrolling:false來創建一個正常的滾動網站,然後fitToSection:true(默認情況下處於活動狀態),以適應在您的篩選器中佔用更多空間的部分。

Demo here

您可以使用選項fitToSectionDelay配置適配延遲。

相關問題