gpt4 book ai didi

javascript - 获取精确的相对鼠标位置 X Y

转载 作者:行者123 更新时间:2023-12-01 02:07:02 25 4
gpt4 key购买 nike

我创建表,处理程序连接了 mousemove。但在左上角,我得到 .offsetX.offsetY 等于-5-5。为什么?我需要 0\0。

<table cellpadding="0" 
id="target"
cellspacing="0"
width="602"
height="500"
style="float:left;
position:relative;
background: url(/content/games/kamikaze2/back.jpg) no-repeat 0 0;">
<tbody>...
</tbody>
</table>

<script type="text/javascript">

$("#target").mousemove(function (event) {
var msg = "Handler for .mousemove() called at ";
msg += event.offsetX + ", " + event.offsetY;
$("#log").append("<div>" + msg + "</div>");
});
</script>

最佳答案

更多示例:show-popup-on-mouse-location

<小时/>

元素内的鼠标坐标

获取元素内鼠标坐标(无滚动条)相对于视口(viewport)的最准确方法是计算之间的差异

const getMousePos = (evt) => {
const pos = evt.currentTarget.getBoundingClientRect();
return {
x: evt.clientX - pos.left,
y: evt.clientY - pos.top
};
};

document.querySelector("#target").addEventListener('mousemove', (evt) => {
const mPos = getMousePos(evt);
evt.currentTarget.textContent = `Mouse position x:${mPos.x} y:${mPos.y}`;
});
#target {
position: absolute;
left: 50px;
top: 20px;
width: 200px;
height: 100px;
background: #0bf;
transform: translate(20px, 30px); /* works even with translate */
}
<div id="target"></div>

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

减去这些值,您可以检索精确的鼠标位置,x:0, y:0 是元素的左上角。即使元素经过 CSS 转换,即:transform:translate(-50%, -50%),返回的值仍然是正确的。

关于javascript - 获取精确的相对鼠标位置 X Y,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10327754/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com