仅在第二次单击时才平滑滚动不一致

时间:2019-05-15 00:48:35

标签: javascript jquery smooth-scrolling

我在这段代码中发现了一个非常奇怪的模式,我购买了此模板以快速启动并运行一个网站,现在我遇到了调试滴答声的问题。因此,这是转到每个页面部分的平滑滚动效果,并且直到我再次单击它并将其固定到位之前,它都不想转到应该的位置。

/*Smooth Scroll*/
$(document).ready(function(){
  // Add smooth scrolling to all links
    var nav = document.getElementById("navver");
    var navHeight = nav.clientHeight;
  $("a.nav").on('click', function(event) {
    // Make sure this.hash has a value before overriding default behavior
        if (this.hash !== "") {
          // Prevent default anchor click behavior
          event.preventDefault();
          // Store hash
          var hash = this.hash;
          // Using jQuery's animate() method to add smooth page scroll
          // The optional number (800) specifies the number of milliseconds it takes to scroll to the specified are
          $('html, body').animate({
            scrollTop: $(hash).offset().top - navHeight
          }, 1200, "swing", function(){
                // Add hash (#) to URL when done scrolling (default click behavior)
                window.location.hash = hash;
          });
    } // End if
  });
});

如您所见,我已经更改了动画持续时间以进行检查,因为这对我来说很奇怪,我还添加了swing放松自己。但是就像我说的那样,效果将超过scrollTop整数,然后单击第二次,它将达到我的数学需要的位置。我已经console.log进行了所有操作,并且无论如何数字都显示相同,因此我看不到在函数运行之前或之后没有解析任何内容。

任何新鲜的眼睛有什么想法吗?

0 个答案:

没有答案