鼠标移动时滚动窗口

Posted

技术标签:

【中文标题】鼠标移动时滚动窗口【英文标题】:scroll window when mouse moves 【发布时间】:2011-06-29 09:40:23 【问题描述】:

大家好我的意思是当鼠标移向窗口边缘(x 或 y 或两者)时,我希望页面滚动,当鼠标停止移动时,我希望页面停止滚动。有很多示例说明如何基于使用 onClick 事件或窗口边缘的滚动区域进行滚动,但基于鼠标光标的移动的例子不多。

任何帮助将不胜感激。

【问题讨论】:

【参考方案1】:

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

您可以在此处阅读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;

【讨论】:

完美.. 谢谢。是的,你是对的,改变预期的功能并不是很好,但是这个页面就像一个画廊墙,所以“看你指向的地方”的功能是一个很好的效果。为了减少“抽搐”(并可能增加一些加速),最好我添加某种缓动效果。这可能吗? 当然,您可以将var diffX = e.clientX - x 存储在变量中,然后检查if (Math.abs(diffX) > 1) 或其他内容,您可以将其除以2 以降低敏感度等。您真正需要知道的是window.scrollBy 将通过提供的 xy 参数滚动窗口。

以上是关于鼠标移动时滚动窗口的主要内容,如果未能解决你的问题,请参考以下文章

Sublime Text 3 - 当我左右移动鼠标时,编辑器窗口左右滚动

div随鼠标移动

WPF里,怎么通过鼠标移动的位置来控制滚动条

Qt 如何获取滚动窗体中鼠标点击的坐标

关于鼠标的一些操作

鼠标滚动时移动视频背景