【问题标题】:Why the scroll animation is not disabled?为什么滚动动画没有被禁用?
【发布时间】:2016-10-20 10:03:41
【问题描述】:

为什么禁用功能不起作用?

没有stop() 功能,它运行良好,但动画滞后于动画的 400 和 stop(),滚动未被禁用。

如果我快速滚动滚轮,动画将停止,当我停止滚轮时,动画开始。

这是我页面的链接http://web.100mb.ro/tutti/

$("#section-five").bind('mousewheel', function(event) {
    if (event.originalEvent.wheelDelta <= 0) {

    }
    else {
        disable_scroll();
        $('html, body').stop().animate({
            scrollTop: $("#section-four").offset().top
        }, 400,'swing',function(){
            enable_scroll();
        });
    }
});


var keys = [37, 38, 39, 40];

function preventDefault(e) {
  e = e || window.eevnt;
  if (e.preventDefault)
      e.preventDefault();
  e.returnValue = false;  
}

function keydown(e) {
    for (var i = keys.length; i--;) {
        if (e.keyCode === keys[i]) {
            preventDefault(e);
            return;
        }
    }
}

function wheel(e) {
  preventDefault(e);
}

function disable_scroll() {
  if (window.addEventListener) {
      window.addEventListener('DOMMouseScroll', wheel, false);
  }
  window.onmousewheel = document.onmousewheel = wheel;
  document.onkeydown = keydown;
}

function enable_scroll() {
    if (window.removeEventListener) {
        window.removeEventListener('DOMMouseScroll', wheel, false);
    }
    window.onmousewheel = document.onmousewheel = document.onkeydown = null;  
}

【问题讨论】:

  • 添加一个标志作为全局变量var mouseDisabled = false;,在你的disable_scroll函数中设置mouseDisabled = true;,在enable_scroll函数中设置mouseDisabled = false;。然后在你做任何其他事情之前检查每个mousewheel 上的标志,如果它是真的return
  • 它从 false 变为 true 但没有什么是相同的(我在页面中更改,在控制台日志中你可以看到)

标签: javascript jquery html css animation


【解决方案1】:

您的 disable_scroll 函数似乎正在添加一个滚动事件侦听器,而您的 enable_scroll 函数将其删除。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-09-02
    • 1970-01-01
    • 2016-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多