jQuery平滑滚动偏移量只在压缩卷上?

问题描述:

我目前正在研究一个网站项目,并尝试通过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属于平滑滚动功能,这是完整的代码(从另一个*线程复制)。该网站我的工作是一个页/视差滚动种和功能允许不同的锚之间平滑滚动像 wandervogel

+0

您需要添加你已经尝试了什么。 – frnt

最终得到了它使用这个工作:

$(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; 
    } 
    }); 
});