如何使当您用鼠标移动 div 时,它的左侧和顶部会立即显示?
var div = document.getElementById('circle');
var listener = (e) => {
div.style.left = e.pageX - 50 + "px";
div.style.top = e.pageY - 50 + "px";
};
circle.addEventListener('mousedown', e => {
document.addEventListener('mousemove', listener);
});
circle.addEventListener('mouseup', e => {
document.removeEventListener('mousemove', listener);
});
console.log(div)
.block1 {
width: 100px;
height: 100px;
position: absolute;
left: 50px;
top: 50px;
border-radius: 50%;
background: blue;
}
<html lang="en">
<body>
<div class="block1" id="circle"></div>
</body>
</html>
您已经拥有所需的一切:
当你移动鼠标时你会得到它们。
要获得 left 和 top 的值,请从它们中减去圆的半径
剩下的就是简单地在界面中显示它们。
为此,您必须首先添加将在其中显示信息的块的布局
在将直接显示值的元素中,最好在博客中临时添加id属性,以便以后可以在JS中找到它们,以便更新这些元素中的文本。
它们的标识符分别是 left_value 和 top_value。
为了让面板始终在一个位置并且不干扰任何人,让我们为其添加绝对定位。
对比鲜明的设计让您可以立即注意到它们
在 JS 中,你必须首先获取给定的元素
而在处理程序中,只需将这些元素内部的文本设置为相同的值即可。
为此,指定
innerText我们感兴趣的元素的属性值就足够了因为
e.pageX - 50并e.pageY - 50在设置文本和设置圆的偏移量时使用两次 - 我们将它们作为单独的变量发布他们已经可以投入到文本和样式中
全部的: