2015-05-19 56 views
0

我寫了一個簡單的自定義欄目搶購劇本,作品在Chrome和Safari很大,但什麼也沒有發生在Firefox之後...部分捕捉到窗口(Firefox的問題)

它是什麼呢:

當滾動停止時,它會檢查每個部分的方向和位置......如果部分的頂部在一定範圍內,則可以轉到頁面頂部或底部。 (滾動方向也被選中)。此外,它還考慮了固定標題的高度。就像我說的在Chrome和Safari中工作。任何想法有什麼不對?

$(document).ready(function() { 
    var animating = false; 
    var mainHeader = $('#main-header'); 

    var items = $("section"); 
    var lastOffset = 0; 
    var scrollDir = 'none'; 


    $(window).scroll(function() { 
     var windowHeight = $(this).height(); 
     var currOffset = $(this).scrollTop(); 
     var headerHeight = mainHeader.outerHeight(); 

     if (currOffset > lastOffset) { 
      scrollDir = 'down'; 
     } else { 
      scrollDir = 'up'; 
     } 
     lastOffset = currOffset; 



     clearTimeout($.data(this, 'scrollTimer')); 
     if (!animating) { 
      $.data(this, 'scrollTimer', setTimeout(function() { 
       items.each(function(key, value) { 
         var currentItem = $(value); 
         var sectionOffset = currentItem.offset().top; 
         var sectionDist = sectionOffset - currOffset; 
        if (scrollDir === 'up' && sectionDist > windowHeight*0.15 && sectionDist < windowHeight) { 
         animating = true; 
         $('body').animate({ scrollTop: sectionOffset-windowHeight + 'px' }, 250); 
         setTimeout(function() { animating = false; }, 300); 
         return false; 
        } 
        else if (scrollDir === 'down' && sectionDist < windowHeight*0.85 && sectionDist > 0) { 
         animating = true; 
         $('body').animate({ scrollTop: sectionOffset-headerHeight + 'px' }, 250); 
         setTimeout(function() { animating = false; }, 300); 
         return false; 
        } 
       }); 
      }, 200)); 
     } 
    }); 
}); 
+0

只是爲了讓你知道。當[在此示例中]使用選項'fitToSection'和'autoScrolling:false'時,此功能在[fullPage.js](http://alvarotrigo.com/fullPage/)中可用(http://alvarotrigo.com/全頁/示例/ normalScroll.html)。 – Alvaro

+0

謝謝@Alvaro,但我確實希望自動滾動在特定時間發生。 – Andrew

回答