javascript - 确定用户滚动与单击动画功能

标签 javascript jquery

我有一个固定的导航栏,当用户向下滚动时它会隐藏;并在向上滚动时出现。这很好用。 这是一个单页滚动网站。

当用户单击导航项并随后向下滚动页面时,会出现问题,固定导航会消失。我希望在单击导航项时保持不变,直到用户使用鼠标滚轮或滚动条向下滚动为止。

到目前为止,我的方法是设置一个变量来确定它是否是编程滚动。我使用该变量来确定导航是否应隐藏作为条件语句。

window.programScrolling = false;

导航项点击函数如下,它将 var 设置为 true。

$('a[href^="#"]:not([href="#"])').on('click',function (e) {
  e.preventDefault();

  var target = this.hash;
  var $target = $(target);

  $('html, body').stop().animate({
      'scrollTop': $target.offset().top
  }, 500, 'easeInOutCubic', function () {

      window.programScrolling = true;

  });

});

这段代码确实有效。但只有一次,就像现在一样,该变量始终为真。

我需要一种方法,当用户滚动时将该变量重置回 false。

我尝试过设置滚动事件

$(window).scroll(function(e) {
   window.programScrolling = false;
});

但这似乎优先于点击事件,因此该变量现在始终为 false。

有什么建议吗?或者其他方法?

最佳答案

如果 $(window).scroll 优先,您的意思是它是第二个调用,您可以使用以下代码:

$(window).scroll(function() {
   if (programScrolling)
      window.programScrolling = false;
   else{
      //User initiated scroll!
   }
});

关于javascript - 确定用户滚动与单击动画功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38842436/

相关文章:

javascript - Checked is not a function javascript错误

javascript - 是否可以将动画 svg 分配给 google Maps JavaScript API 中的标记符号?

javascript - 将函数传递给 jQuery 选择器

javascript - 这个 JSON 字符串有什么问题?

JavaScript 无法在我机器上的任何浏览器上运行

javascript - MongoDB-mapReduce

javascript - 只绘制 SVG 圆环图的底部

jQuery - 函数体后缺少 } 语法错误

javascript - 在 IE 中 div 的 jQuery 重新加载列表后添加的额外空间

javascript - 选择器 $ ('#myform' ) 会返回一个数组吗?