gpt4 book ai didi

javascript - 我正在尝试让一个 div 元素跟随我的鼠标(javascript),但它一直出现故障

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

我一直在尝试让一个 div 元素使用 javascript 跟随我的鼠标,但它一直在左上角出现故障。这是我的代码:
HTML:

<html>
<body>
<div id="circle"></div>
</body>
</html>

CSS:

body{
margin:0;
padding:0;
overflow:hidden;
background-color:#77dd77;
}
div{
position:absolute;
transform:translate(-50%,-50%);
height:35px;
width:35px;
border-radius:50%;
border:2px solid black;
}

JavaScript:

document.addEventListener('mousemove', function(e) {
let body = document.querySelector('body');
let circle = document.getElementById('circle');
let left = e.offsetX;
let top = e.offsetY;
circle.style.left = left + 'px';
circle.style.top = top + 'px';
});

我仍然很难确定错误是否发生在 CSS 或 JavaScript 中。有人可以帮忙吗?

最佳答案

您应该使用 e.pageYe.pageX而不是 e.offset...因为page...是相对于整个文档的。 offset...相对于父容器(在本例中为 body )并且因为 body没有高度(因为它的 child 的位置是绝对的)offset... 的鼠标检测不一致。

let circle = document.getElementById('circle');

const onMouseMove = (e) =>{
circle.style.left = e.pageX + 'px';
circle.style.top = e.pageY + 'px';
}

document.addEventListener('mousemove', onMouseMove);
body{
margin:0;
padding:0;
overflow:hidden;
background-color:#77dd77;
}
div{
position:absolute;
transform:translate(-50%,-50%);
height:35px;
width:35px;
border-radius:50%;
border:2px solid black;
}
<html>
<body>
<div id="circle"></div>
</body>
</html>

关于javascript - 我正在尝试让一个 div 元素跟随我的鼠标(javascript),但它一直出现故障,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62347848/

25 4 0
文章推荐: javascript - 是否可以使用相同的函数在不同的对象上设置状态
文章推荐: java - com.opensymphony.workflow.loader.SpringWorkflowFactory 的位置?
文章推荐: java - 无法从外部类访问 EAR 中定义的资源 (JBoss 5.1)
文章推荐: javascript - 文本节点不能作为 [ReactJS] 的子节点出现