2011-06-29 35 views
5

全部你好

我的意思是当鼠标移向窗口边缘(x或y或两者)时,我希望页面滚动,当鼠标停止移动时,我希望页面停止滚动。

有许多基于在窗口边缘使用onClick事件或滚动区进行滚动的示例,但基于鼠标光标的移动并不多。当鼠标移动时的滚动窗口

任何帮助将不胜感激。

回答

5

网页已经设计成使用滚动条,页面/主页/结束/箭头键等进行滚动。是否有任何理由不足以满足您的页面?改变预期的功能通常不是一个好主意。

您可以在这里阅读mousemove活动。无论如何,下面的代码应该工作,但我真的不建议使用它。对于敏感小鼠的人可能会特别迷失方向:

// Variables for current position 
var x, y; 

function handleMouse(e) { 
    // Verify that x and y already have some value 
    if (x && y) { 
    // Scroll window by difference between current and previous positions 
    window.scrollBy(e.clientX - x, e.clientY - y); 
    } 

    // Store current position 
    x = e.clientX; 
    y = e.clientY; 
} 

// Assign handleMouse to mouse movement events 
document.onmousemove = handleMouse; 
+0

完美..谢谢。是的,你是正确的改变预期的功能不是很好,但这个页面类似于一个画廊的墙壁,所以“看你指向哪里”的功能是一个很好的效果。为了减少“抖动”(并且可能会加上一些加速),最好的做法是增加某种缓解效果。这可能吗? – kevin

+0

当然,你可以将'var diffX = e.clientX - x'存储在一个变量中,然后检查'if(Math.abs(diffX)> 1)'或其他东西,你可以将它除以2以使事情变得不那么敏感等等。你真正需要知道的是'window.scrollBy'将通过提供的'x'和'y'参数来滚动窗口。 – brymck

+0

Bryan ....非常好。谢谢! – kevin

相关问题