JavaScript实现DOM元素拖拽功能:原理与代码解析

作者:微光时间:2026-10-23 17:07:46浏览:146

本文详细解析了JavaScript中实现鼠标拖拽功能的完整代码。通过监听mousedown、mousemove和mouseup事件,结合clientX/Y与offsetLeft/Top计算相对位移,实现DOM元素的自由移动。文章提供了CSS定位、HTML结构及JS逻辑的完整示例,适合前端开发者参考学习。

JavaScript实现DOM元素拖拽功能:原理与代码解析

本文分享了一个JavaScript实现鼠标拖拽功能的完整示例,供读者参考学习。

效果展示如下图所示:

JavaScript实现DOM元素拖拽功能:原理与代码解析

相关的CSS样式代码如下:


<style>
 *{
 margin:0;
 padding:0;
 }
 #box{
 width: 200px;
 height: 200px;
 background: url("./img/aio.png") no-repeat;
 background-size: cover;
 position: absolute;/*定位元素 父级元素window就是初始包含块*/
 top:0;
 left:0;
 }
</style>

HTML结构代码如下:


<div id="box"></div>

核心JavaScript逻辑代码如下:


<script>
 //获取标签
 var box=document.getElementById("box");
 var body=document.body;
 var x,y;//全局作用域
 //鼠标按下事件 0级
 box.onmousedown=function(e) {//传入形参e
 var mx=e.clientX;//鼠标距离浏览器左
 var my=e.clientY;//鼠标距离浏览器上
 var bx=box.offsetLeft;//盒子距离浏览器左
 var by=box.offsetTop;//盒子距离浏览器上
 x=mx-bx;//实际盒子距离的浏览器左
 y=my-by;//实际盒子距离的浏览器上
 //鼠标移动事件 0级
 body.onmousemove=function(e) {//拿到全局x、y、
  //获取当前鼠标移动到的坐标点
  var mx=e.clientX;
  var my=e.clientY;
  //盒子距离浏览器
  box.style.left=mx-x +"px";
  box.style.top=my-y +"px";

 };
 //鼠标弹起事件(松开)
 box.onmouseup=function(e) {
  body.onmousemove=null;//不做任何操作//dom0级事件解除事件绑定
  //获取当前鼠标移动到的坐标点
  var mx=e.clientX;
  var my=e.clientY;
  //盒子距离浏览器
  box.style.left=mx-x +"px";
  box.style.top=my-y +"px";
 }
 };
</script>

以上就是本文关于JavaScript鼠标拖拽功能的完整介绍,希望能为读者的学习提供有益帮助,同时也欢迎大家继续支持本站获取更多技术内容。

作者最新文章