利用JS实现元素拖拽怎样做,步骤是什么
Admin 2022-09-14 群英技术资讯 1175 次浏览
这篇文章主要讲解了“利用JS实现元素拖拽怎样做,步骤是什么”,文中的讲解内容简单、清晰、详细,对大家学习或是工作可能会有一定的帮助,希望大家阅读完这篇文章能有所收获。下面就请大家跟着小编的思路一起来学习一下吧。元素拖拽分成3个步骤:按下鼠标,移动鼠标,松开鼠标。
拖拽原理:按下拖拽元素后开始监听文档中鼠标移动事件,然后再监听鼠标松开事件;鼠标移动时,元素div要随着鼠标一起移动,需要计算元素div位移的距离(移动的距离=鼠标离可视窗口的位置 �C 鼠标在div中相对于左上角的位置)。然后松开鼠标时,删除移动事件和松开事件,元素完成拖拽。
一开始先监听鼠标按下事件mousedown,事件触发执行mouseHandler函数;
div.addEventListener("mousedown",mouseHandler);
进入mouseHandler函数后,进行if else if 的判断,如果是按下事件,就监听鼠标移动和松开事件,这里要用document文档来作为监听对象,如果使用元素div监听时,如果鼠标在移动过程超出了div元素,就无法拖拽元素;
进入移动事件,就把鼠标移动的距离(鼠标离可视窗口的位置 �C 鼠标在div中相对于左上角的位置)赋值给元素的left和top,元素就可以随着鼠标移动;
最后进入松开鼠标事件,删除了移动和送开鼠标事件,元素就会停在鼠标松开的位置
关键:元素显示位置=鼠标离可视窗口的位置 �C 鼠标相对于在div元素左上角的位置
js代码带注释
var div=document.querySelector("div");
var offsetX,offsetY; //定义全局变量用于接收鼠标坐标的变量
div.addEventListener("mousedown",mouseHandler);
function mouseHandler(e){ //事件的执行函数自带参数e
if(e.type==="mousedown"){ //e.type是执行事件的类型
offsetX=e.offsetX;
offsetY=e.offsetY;
document.addEventListener("mousemove",mouseHandler)
document.addEventListener("mouseup",mouseHandler) //如果有鼠标移动或松开事件的发生再次执行mouseHandler函数
}else if(e.type==="mousemove"){
div.style.left=e.clientX-offsetX+"px"; //鼠标相对当前可视窗口的坐标 - 相对元素左上角的坐标
div.style.top=e.clientY-offsetY+"px";
}else if(e.type==="mouseup"){
document.removeEventListener("mousemove",mouseHandler);
document.removeEventListener("mouseup",mouseHandler); //删除鼠标移动和鼠标松开事件
}
}
效果如图:

注意:div元素要设置定位才可以进行移动。
关于“利用JS实现元素拖拽怎样做,步骤是什么”的内容今天就到这,感谢各位的阅读,大家可以动手实际看看,对大家加深理解更有帮助哦。如果想了解更多相关内容的文章,关注我们,群英网络小编每天都会为大家更新不同的知识。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
这篇文章主要给大家介绍了关于js中typeof用法的相关资料,typeof运算符把类型信息当作字符串返回,包括有大家常有变量类型,本文通过示例代码介绍的非常详细,需要的朋友可以参考下
增加方法:1、使用“$(".类名")”语句获取设置了某个指定类的元素节点;2、使用“元素节点.click(function(){...})”语句给获取的元素节点增加点击事件。
本篇文章带大家深入了解Angular中的依赖注入模式,分享依赖注入模式的应用和玩法案例,希望对大家有所帮助!
这篇文章主要为大家详细介绍了js模拟实现京东详情页图片放大效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
我们学习了JS 之后,能够用JS实现很多有意思的炫酷效果。这篇文章就给大家分享一个模拟电灯开关的小案例,生活中,我们用手一按就可以让电灯亮起和熄灭,下面我们来看看如何用JS实现点灯开关效果。
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008