js实现元素可拖拽方法
2023-12-13 05:28:01
?业务需要:Vue+element plus实现对弹框进行拖拽,并可拖拽到显示页面的外面,而element提供的拖拽只能在当前页面不可超出。所以手写了拖拽方法。
实现效果
对元素进行拖拽
?拖拽方法
function dragElement(ele) {
ele.addEventListener("mousedown", function (e) {
// 取消浏览器默认事件
e.preventDefault();
// 存储鼠标位置
var mouseX = e.clientX;
var mouseY = e.clientY;
// 存储元素当前位置
var initX = draggableElement.offsetLeft;
var initY = draggableElement.offsetTop;
// 添加鼠标移动事件监听器
document.addEventListener("mousemove", onMouseMove);
// 添加鼠标抬起事件监听器
document.addEventListener("mouseup", onMouseUp);
function onMouseMove(e) {
// 计算鼠标移动的距离
var deltaX = e.clientX - mouseX;
var deltaY = e.clientY - mouseY;
if (window.innerWidth - 20 > e.clientX && e.clientX > 20) {
// 将元素移动到新的位置,这里的加上deltaX和deltaY是因为我们需要将元素移动到鼠标点击位置的右边和下边
draggableElement.style.left = initX + deltaX + "px";
}
if (window.innerHeight - 20 > e.clientY && e.clientY > 20) {
draggableElement.style.top = initY + deltaY + "px";
}
}
function onMouseUp() {
// 移除鼠标移动和抬起事件监听器
document.removeEventListener("mousemove", onMouseMove);
document.removeEventListener("mouseup", onMouseUp);
}
});
}
对方法进行使用
<div
id="box"
style="
width: 100px;
height: 100px;
background-color: brown;
position: absolute;
"
></div>
<script>
const draggableElement = document.querySelector("#box");
dragElement(draggableElement)
</script>
注意:绑定的元素一定要设置css样式“position: absolute;”,父元素可设置“overflow: hidden”,防止出现滚动条。?
文章来源:https://blog.csdn.net/weixin_57399180/article/details/134857812
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!