jQuery平滑滚动偏移仅在降级滚动?

时间:2017-03-27 10:53:19

标签: jquery scroll offset scrolltop

我目前正在开发一个网站项目,并试图通过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;
  });
});

因为该站点还有一个标题,当向下滚动时转出视口,当向上滚动时进入视口,我需要通过将滚动目标偏移一定量来适应其可见性,因此{{1变量。

截至目前,无论滚动方向如何,displace变量都会从displace中减去。如何修改上面的代码,以便在向上滚动时仅减去它?

我想在那里添加一个target.offset().top语句,类似于:

if else

有关使其发挥作用的任何建议吗?

非常感谢!

1 个答案:

答案 0 :(得分: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; 
    }
  });
});