javascript - 如何在“enddrag”上重新定位元素?
问题描述
我想知道如何使用“enddrop”事件侦听器来更改元素的位置。
我尝试使用这个:
document.addEventListener('dragend', e => {
e.target.style.left = e.clientX;
e.target.style.top = e.clientY;
});
这可行,但它看起来不自然,因为元素左上角的坐标已更改为鼠标位置。因此,如果用户将元素拖动到左上角,它将完美地工作,但如果您拖动元素上的任何其他位置,它会给它一个活泼的效果,因为左上角将捕捉到鼠标的位置。
谢谢!
解决方案
我最近解决了一个类似的问题:
点击链接:当它已经有子元素时防止放置事件?拖放
在您开始拖动(拖动开始)的那一刻,您根据元素和鼠标位置计算顶部和左侧偏移,并在结束拖动(拖动)事件时根据需要使用此偏移进行调整。
let offset = [0, 0] // initial state offset x, y
function dragStart(ev) {
// your code..
offsetX = ev.target.offsetLeft - ev.clientX
ev.target.offsetLeft - ev.clientX,
ev.target.offsetTop - ev.clientY
]
}
有任何疑问把我可以帮助你的代码。
希望这可以帮助。
推荐阅读
- javascript - 如何在 Bootstrap DataTable 列网格上实现可编辑弹出框
- windows - Git 交互式命令无法完成,并在 MinGw64 上显示消息“系统找不到指定的路径”
- html - Html复选框输入大小错误
- batch-file - 如何从 .dll 文件中读取行并在输出中添加数字。(Windows 批处理)
- wpf - 如何检测任务栏位置 WPF
- java - How to convert sorted Arraylist to BST
- r - 从R中的交叉引用表中获取最后一个值
- heroku - Heroku 平台积分
- c - 与 C 中的 Java NextInt 类似的功能
- acumatica - 当 DeletedDatabaseRecord 为真时,用户可以查看记录吗?