2012-01-18 59 views
0

我制作了一个平滑垂直滚动的页面,我想知道您是否可以以某种方式“阻止”,以便用户无法使用鼠标或触摸板在页面上滚动 - 当他们这样做时,整个想法就会停止。平滑垂直滚动 - 阻止用户滚动

你可以在我的网页上看到滚动。 enter link description here

到目前为止,我刚刚隐藏了滚动条,所以他们不能这样做。 我想你可以说我要求的是,你可以“阻止”手动滚动吗?

谢谢。

回答

0

你这样做的方式很好。我不认为你可以取消滚动事件,就像你可以与其他事件(按键,按钮点击等)。

设置溢出隐藏将是我该怎么做,因为那完全停止所有滚动。这个事件甚至不会发生在后台。

以下代码将阻止使用鼠标滚轮进行滚动。虽然这与我无关,因为我无法使用鼠标滚轮进行滚动,但可能会阻止使用触控板进行滚动。

只需添加到您的包含js文件的一个...

window.onmousewheel = document.onmousewheel = function(event){ 
    if (event.preventDefault) event.preventDefault(); 
    event.returnValue = false; 
} 

下面是一个例子...

http://jsfiddle.net/johncmolyneux/aSw2g/

+0

这只是令人讨厌,当我突然滚动我的触摸板,而不是点击链接。如果用户确实需要点击链接进行滚动,这可能会更好。 – 2012-01-18 18:26:36

+0

好的 - 我没有遇到过这个问题,因为我在台式机上,而不是笔记本电脑上。滚动完全禁用桌面 - 滚轮,光标键,页面上/下全部禁用。 – Archer 2012-01-18 18:54:38

+0

或者你的意思是平板电脑? – Archer 2012-01-18 19:19:06

0

他们有几种解决方案,但有没有,我发现完善。该simpliest是:

  • 设置CSS属性“溢出”隐藏(如果你的身体,你必须设置高度和宽度100%的身体和HTML,再加上没有边距/填充边界)。

  • 您也可以添加侦听器来滚动事件,然后使用event.prevendDefault()来阻止它们。

但他们总是不良影响,可以“滚动”网页(和块)没有mousescroll:

  • 首先是选择:你的布局打破这里。要尝试它,从上面选择并下去,然后页面将滚动(与铬)。当没有文本并且没有拖放时,这种情况不太可能发生,但是一旦发生,您的用户因没有滚动条而丢失。
  • 秒是scrollIntoView()。你可以通过JavaScript调用它,或者浏览器有时会自动执行它(href指向锚点,输入焦点,“重新加载时滚动内存”)。这是最大的风险,但对这些风险的控制很少。

终于,一个“坏”的解决方案,我发现是元素的scrollTop的财产定期强制为0,但最有可能你会不会到那里和CSS body { overflow: hidden; height: 100% }就足够了。