2017-03-27 59 views
0

我目前正在研究一個網站項目,並嘗試通過jQuery實現平滑滾動功能。jQuery平滑滾動偏移量只在壓縮捲上?

這裏是我的(工作!)到目前爲止的代碼:

$(document).ready(function(){ 
    $('a[href*="#"]:not([href="#"])').click(function() { 
    var displace = 72;     /* Vertical offset for scroll */ 
    var target = $(this.hash); 
    $('html, body').animate({ 
     scrollTop: target.offset().top - displace}, 1000); 
     return false; 
    }); 
}); 

因爲網站也有其轉換出向上滾動時,向下進入視滾動時視口的頭,我需要以某種方式通過將滾動目標偏移一定量來適應其可見性,因此變量爲displace

截至目前,無論滾動方向如何,從target.offset().top減去displace變量。我將如何修改上面的代碼,以便在向上滾動時僅減去它?

我想到的線沿線的中添加if else聲明那裏,東西:

var scrollPos = $(window).scrollTop(); 
if (target.offset().top > scrollPos) { /* On downscroll */ 
    scroll to target 
} else {         /* On upscroll */ 
    scroll to target - displace 
} 

任何建議,得到這個工作?

非常感謝!

+0

添加您的其餘代碼。 – frnt

+0

@frnt屬於平滑滾動功能,這是完整的代碼(從另一個stackoverflow線程複製)。該網站我的工作是一個頁/視差滾動種和功能允許不同的錨之間平滑滾動像 wandervogel

+0

您需要添加你已經嘗試了什麼。 – frnt

回答

0

最終得到了它使用這個工作:

$(document).ready(function(){ 
    $('a[href*="#"]:not([href="#"])').click(function() { 
    var scrollPos = $(window).scrollTop(); 
    var displace = 72; 
    var target = $(this.hash); 
    if (scrollPos > target.offset().top) { 
     $('html, body').animate({ 
     scrollTop: target.offset().top - displace}, 1000); 
     return false; 
    } else { 
     $('html, body').animate({ 
     scrollTop: target.offset().top}, 1000); 
     return false; 
    } 
    }); 
});