2013-08-22 111 views
0

我想要一个特定的内容停止一个特定的内容,一旦滚动击中该部分。它只会在满足特定条件时进行滚动(即草图,点击该div内的内容等)。如何暂停页面内的内容?

您是如何做到这一点的?有任何想法吗?谢谢。

回答

0

您可以通过在文档滚动上绑定处理程序并调用e.preventDefault()来防止默认的滚动操作。

这里,contentPos是你想停止滚动的y位置,它与$(document).scrollTop()进行比较。

$(document). 
    bind('mousewheel DOMMouseScroll', function (e) { 

     contentYPos = 500; 
     conditionMet = false; 

     if ($(document).scrollTop() >= contentYPos 
      && conditionMet == false 
      && e.originalEvent.wheelDelta < 0) { 

       e.preventDefault(); 
     } 
    }); 

这将检查您的conditionMet是假的,如果用户向下滚动(想必你想要的窗口仍然能够向上滚动),直到满足条件,将忽略该行为。

这里是在这方面的工作一个js小提琴:http://jsfiddle.net/cMKh2/

编辑:包括其上触发窗口滚动一个更全面的版本。 (包括这两种方法以供比较)。

http://jsfiddle.net/cMKh2/2/

EDIT2:最终版本与条件通过按下按钮,和动态滚动距离改变。

http://jsfiddle.net/cMKh2/4/

+0

这是你知道的长度,直到它达到它应该停止的假设。我的计划是在一篇文章上实现它,然后一旦它通过滚动看到容器,它就停在那里。另外,如果有一个else语句,它是如何工作的,所以一旦条件满足,它可以继续进行? – ralph

+0

用$(“#element”).offset()。top替换contentYPos,它会动态停止。 这是一个小提琴,展示你想要什么。它将停止滚动蓝色元素,直到单击按钮,这会将conditionMet变量更改为true。这可以防止滚动锁定。希望这应该是你想要的! http://jsfiddle.net/cMKh2/4/ –

+0

嗯...这是接近我想要的。但是,还有一件事,它有可能在它进行之前对滚动进行计数吗?我打算检测滚动事件而不是点击事件。 – ralph