编程语言
首页 > 编程语言> > 如何在javascript中实现“鼠标抵抗”?

如何在javascript中实现“鼠标抵抗”?

作者:互联网

我需要在javascript中实现鼠标抵抗.

作为我的意思的示例,请考虑一下Enligthenment窗口管理器如何处理屏幕边缘阻力以在不同的桌面之间切换,或者如果您不熟悉该功能:

想象其中有一个正方形的大矩形.
在正方形内单击鼠标[onmousedown]时,鼠标会使其自身移动到正方形的边界,然后进行一些固定操作直到达到阈值,然后在较大的矩形内四处移动.

理想情况下,鼠标光标应停留在正方形内,直到未达到该阈值为止,并且仅在达到该阈值时才离开该区域.

有什么想法或例子吗?
跨浏览器解决方案也受到极大的赞赏. (直到ie7,即)
谢谢!

解决方法:

如前所述,您无法使用Javascript设置鼠标位置.

但是,由于您问过如何在mousedown上实现此功能,因此我假设用户正在屏幕上拖动某些东西.因此,您可以让他们拖动的元素显示此行为.您需要两个元素作为区域,一个可以自由拖动目标,另一个可以定义边界的大小.我会用jQuery来缩短代码,但基本上您会遇到类似这样的事情. (未经测试的代码)

HTML:

<div class='borderLand'>
    <div class='freeZone'>
        <img class='draggable'>
    </div>
</div>

CSS:

.borderLand {position: relative; width: 110px; height: 110px;}
.freeZone {position: relative; top: 10px; left:10px; height: 100px; width: 100px;}

JS:

我无法从头顶写完整的代码,但是算法就像

onmousedown{
  check for click location
  if it's over the draggable (watch for bubbling) begin dragging, set dragging flag
}

onmouseup{
  clear dragging flag if it's set
}

borderland onm ouseover{
  if dragging, stop the movement of the draggable (watch for bubbling here too)
}

borderland onm ouseout{
  start dragging again (if they move back in or out it doesn't matter, you want to drag)
}

抱歉,如果您需要更多详细信息,但是用普通的JS进行操作会有点冗长,而且我不确定您需要多少帮助.

标签:javascript-events,javascript
来源: https://codeday.me/bug/20191209/2096919.html