mouseenter
使用 JavaScript/jQuery,我可以使用and为鼠标进入或离开元素创建事件mouseleave
。例如:
var img = document.querySelector("img");
img.addEventListener("mouseenter", function() {
console.log("Estoy sobre la imagen");
});
img.addEventListener("mouseleave", function() {
console.log("Ya no estoy sobre la imagen");
});
<img src="http://placehold.it/200" />
当鼠标进入或离开图像时,这将导致执行操作(在控制台上显示消息)。现在我的问题是:是否有一个事件不是在鼠标进入图像时触发,而是在鼠标靠近图像时触发?
例如,如果我在某些文本旁边有一个图像(尽管它可能是 adiv
或 a之类的任何东西),并且鼠标位于图像边框的 30px 内,则在 JavaScript 中执行一个操作。thead
这张图或多或少地显示了我想要的东西 - 如果鼠标进入图像周围的区域,应该会发生一些事情(仅以红色突出显示,它是一个“虚构”区域):
如果它不存在,如何使用 JavaScript 或 jQuery 模拟该事件?
我只是将代码拼凑在一起,所以它可能有问题,但我认为这样的事情可能会奏效。
计算鼠标与对象之间的距离,以确定鼠标是否在图像上、靠近或远离图像。
该变量
distanciaMinima
设置鼠标被认为接近图像的最小距离。您可以添加一个 div 元素并使用 padding 属性指定接近图像的范围,并添加 mouseenter 事件,它会是这样的:
介绍:
要使用纯 javascript 执行此操作,我们将执行以下操作:我们将创建一个函数,以便在触发鼠标事件时(在本例中为 onmousemove)它检查鼠标和对象之间的距离(均已定义)并且在这种情况下实现它将是我们想要的行动。
所需参数:
因此我们需要三个参数:
使用方法和功能:
我们已经准备好参数,接下来是获取对象的四个边,我们将使用 来执行此操作
offset
,它允许我们获取元素的边距或限制部分的像素位置。我们将有两种可能性
offsetLeft
和offsetTop
。有必要定义对象的底部和右侧部分,因此我们将使用:
width
获取宽度(用于计算右边距)height
高度(计算最低点)更好理解的图表:
让我们首先考虑一下这个 X/Y 轴图:
我们将以此为指导计算物体的极限。
定义限制:
剩下:
现在我们开始创建对象的侧面:
我们得到左边距的值,然后我们减去距离以创建我们想要的对象相对于左侧的限制,如果我们减去它,限制位置将向左移动。
更高:
我们得到上边距的值,然后减去距离以创建我们想要的对象相对于其高度的限制。
法律:
现在让我们开始计算边:
对于右边,我们将使用左边距的位置,然后我们将添加对象的宽度,这将产生右边距,然后我们添加我们想要的与限制的距离。
使用乘法,因为没有乘法的距离限制将正好在对象的边缘。
降低:
对于底部,我们将使用上边距的位置,然后我们将添加对象的高度,这将产生右边距,然后我们添加我们想要的距离限制。
使用乘法,因为没有乘法的距离限制将正好在对象的边缘。
最终限制:
像这样离开我们的限制:
鼠标位置:
接下来我们需要获取鼠标在 X 和 Y 轴上的位置(坐标)。
为此,我们将使用
pageX
andpageY
,它将对事件做出反应(onmousemove)让我们这样保存:
活动地点:
检查距离:
我们将看到如何检查鼠标相对于对象和笛卡尔平面的位置,以下必须为真:
现在我们将使用一个return来知道它是否被执行,如下:
结束功能:
触发鼠标事件:
我们将在 JavaScript 文件中声明计算事件发生时间的函数
onmousemove
,如下所示:结束代码:
有了这个,我们的功能就准备好了
让我们添加样式以更好地查看它:
学分:
您只需添加一个具有特定大小的 div 并向 div 添加填充:
例如,如果您的图像是 100x100 像素,那么您的 div 将是 200x200 像素,因此您向 div 添加了 100px 的填充,并且您拥有想要执行的范围,您将事件添加到 div 它将是一切。
有了这个它应该可以正常工作,我没有测试代码,但它应该可以适应您的需求。