【问题标题】:Temporarily disable mousewheel until animation over暂时禁用鼠标滚轮,直到动画结束
【发布时间】:2012-05-06 04:41:20
【问题描述】:

我正在开发一个有启动页面的网站,我希望它能够工作,这样当您向下滚动启动页面时,div.splash 会向上滚动并让网站滚动进来。我有它在大多数情况下都有效,只是有一点小烦恼。根据您滚动鼠标的速度,它会滚动到主站点一定距离。

我希望它能够工作,以便一旦它检测到鼠标滚轮上的一次单击,它就会执行以下所有操作,但鼠标滚轮中的任何其他移动都将被禁用,直到slideUp()/animate()功能完成。这样,当他们滚动时,动画会发生,但人物仍然会从页面的最顶部开始。

$(window).bind('mousewheel', function(e, delta) {
if(delta == -1){    
    disable_scroll();       
    $('.alpha.wrapper').show();
    $('.titles .beta').hide();
    $('.splash').slideUp(800);
    $('.titles').animate({
        top: '495px'
    },800,enable_scroll());
}
});

【问题讨论】:

  • (offtopic) 我只是讨厌启动页面:这是让用户远离的另一种方式。
  • @RokoC.Buljan 实际上很像这个网站,基本上就是这个。 antonmartin.fr 是的,它仍然是一个启动页面,但我正在构建的页面将有多种方法可以访问主站点。向下箭头/向下翻页/向下滚动。它更像是一个超大的横幅。我的也是一个小型婚礼回复网站,所以没什么大不了的。

标签: javascript jquery scroll mousewheel


【解决方案1】:

通过将disable_scroll(); 调用移至准备好的文档,您将能够在页面加载后立即禁止用户滚动。

然后,将上面的内容改为:

$(window).bind('mousewheel', function(e, delta) {
if(delta == -1){    
    $('.alpha.wrapper').show();
    $('.titles .beta').hide();
    $('.splash').slideUp(800);
    $('.titles').animate({
        top: '495px'
    },800,function(){enable_scroll();});

【讨论】:

  • 我实际上正在使用接受的答案中提供的代码,我的问题只是禁用滚动不会立即启动。他们仍然滚动到网站的一部分。
  • 您是否尝试过在页面加载而不是在绑定内部调用 disable_scroll?
  • 我试过了,没用。我确实删除了 enable_scroll() ,它似乎按我想要的方式工作,但我无法在动画之后滚动,所以我认为问题在于 enable_scroll() 只是启动得太早了。按照我的方式,在动画功能完成之前 enable_scroll() 是否应该运行?
  • 是的,我相信是的。我很难根据给出的内容给你和确切的例子来测试,但是在一切都完成之后尝试将 enable_scroll 移动到。
  • 不知道为什么这会有所不同,从我的基本理解来看,原件应该可以工作,但我改变了它... to },800,function(){enable_scroll();});,再加上你将 disable_scroll() 移出绑定的建议,它现在工作得很好.如果你愿意,你可以编辑你的答案以包括这两件事,我会接受。
猜你喜欢
  • 1970-01-01
  • 2023-03-18
  • 1970-01-01
  • 1970-01-01
  • 2017-11-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多