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



我一直在尝试让一个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没有高度(因为它的子容器具有绝对位置(,因此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;
}
#circle{
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>

最新更新