检测鼠标从哪一侧离开 div
Detect from which side the mouse left a div
我修改了另一个问题best answer的代码(目的是检测鼠标从哪一侧进入 a div
) 为了让它检测鼠标从哪一侧 left a div
.
Here is the my code。我更改了日志以显示在控制台中。但不知何故,结果总是 "right" 或 "bottom" 而不是 "top" 或 "left".
有什么建议吗?
我一直在研究代码并修改了一些内容。
由于您使用绝对位置定位 div,因此您需要以不同的方式检查位置。
首先,我使用 getBoundingClientRect()
其中 returns 元素的位置(左、上、右和下)。
然后我得到鼠标坐标并计算离哪条边最近。
您可以在此处查看我的代码示例:
document.querySelector('#content').onmouseleave = function(mouse) {
var edge = closestEdge(mouse, this);
console.log(edge);
}
function closestEdge(mouse, elem) {
var elemBounding = elem.getBoundingClientRect();
var elementLeftEdge = elemBounding.left;
var elementTopEdge = elemBounding.top;
var elementRightEdge = elemBounding.right;
var elementBottomEdge = elemBounding.bottom;
var mouseX = mouse.pageX;
var mouseY = mouse.pageY;
var topEdgeDist = Math.abs(elementTopEdge - mouseY);
var bottomEdgeDist = Math.abs(elementBottomEdge - mouseY);
var leftEdgeDist = Math.abs(elementLeftEdge - mouseX);
var rightEdgeDist = Math.abs(elementRightEdge - mouseX);
var min = Math.min(topEdgeDist,bottomEdgeDist,leftEdgeDist,rightEdgeDist);
switch (min) {
case leftEdgeDist:
return "left";
case rightEdgeDist:
return "right";
case topEdgeDist:
return "top";
case bottomEdgeDist:
return "bottom";
}
}
#content {
width: 100px;
height: 100px;
background: lightblue;
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}
<div id="content"></div>
希望对你有帮助。
干杯!
我修改了另一个问题best answer的代码(目的是检测鼠标从哪一侧进入 a div
) 为了让它检测鼠标从哪一侧 left a div
.
Here is the my code。我更改了日志以显示在控制台中。但不知何故,结果总是 "right" 或 "bottom" 而不是 "top" 或 "left".
有什么建议吗?
我一直在研究代码并修改了一些内容。
由于您使用绝对位置定位 div,因此您需要以不同的方式检查位置。
首先,我使用 getBoundingClientRect()
其中 returns 元素的位置(左、上、右和下)。
然后我得到鼠标坐标并计算离哪条边最近。
您可以在此处查看我的代码示例:
document.querySelector('#content').onmouseleave = function(mouse) {
var edge = closestEdge(mouse, this);
console.log(edge);
}
function closestEdge(mouse, elem) {
var elemBounding = elem.getBoundingClientRect();
var elementLeftEdge = elemBounding.left;
var elementTopEdge = elemBounding.top;
var elementRightEdge = elemBounding.right;
var elementBottomEdge = elemBounding.bottom;
var mouseX = mouse.pageX;
var mouseY = mouse.pageY;
var topEdgeDist = Math.abs(elementTopEdge - mouseY);
var bottomEdgeDist = Math.abs(elementBottomEdge - mouseY);
var leftEdgeDist = Math.abs(elementLeftEdge - mouseX);
var rightEdgeDist = Math.abs(elementRightEdge - mouseX);
var min = Math.min(topEdgeDist,bottomEdgeDist,leftEdgeDist,rightEdgeDist);
switch (min) {
case leftEdgeDist:
return "left";
case rightEdgeDist:
return "right";
case topEdgeDist:
return "top";
case bottomEdgeDist:
return "bottom";
}
}
#content {
width: 100px;
height: 100px;
background: lightblue;
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}
<div id="content"></div>
希望对你有帮助。
干杯!