使用javaScript实现鼠标拖拽事件

发布时间 - 2026-01-11 03:26:44    点击率:

本文实例为大家分享了js实现鼠标拖拽事件的具体代码,供大家参考,具体内容如下

<html>
 <head>
  <meta charset="UTF-8">
  <title></title>

  <style>
   body{
    margin: 0;
    padding: 0;
   }
   div{
    position: absolute;
    top: 200px;/*div的y轴*/
    left: 150px;/*div的x轴*/
    width: 300px;
    height: 200px;
    background-color: gray;
   }
   div:hover{
    cursor: move;
   }
  </style>

  <script>

   /*
    * 分析:
    * 获取鼠标实时移动的坐标;m_move_x,m_move_y
    * 鼠标按下时的坐标;m_down_x,m_down_y
    * div的坐标;dx,dy
    * 鼠标按下时,鼠标与div的偏移量;md_x,md_y
    * div的新坐标;ndx,ndy
    */

   var isDown = false;//记录鼠标状态
   var move_div ;//要操作的div对象
   var m_move_x,m_move_y,m_down_x,m_down_y,dx,dy,md_x,md_y,ndx,ndy;

   //鼠标按下
   function down(){
    move_div = document.getElementById("move_div");
    isDown = true;

    //获取鼠标按下时坐标
    m_down_x = event.pageX;
    m_down_y = event.pageY;

    //获取div坐标
    dx = move_div.offsetLeft;
    dy = move_div.offsetTop;

    //获取鼠标与div偏移量
    md_x = m_down_x - dx;
    md_y = m_down_y - dy;
   }

   //鼠标移动
   function move(){
    move_div = document.getElementById("move_div");

    //实时更新div的坐标
    dx = move_div.offsetLeft;
    dy = move_div.offsetTop;

    //获取鼠标移动实时坐标
    m_move_x = event.pageX;
    m_move_y = event.pageY;

    //鼠标按下时移动才触发
    if(isDown){

     //获取新div坐标,鼠标实时坐标 - 鼠标与div的偏移量
     ndx = m_move_x - md_x;
     ndy = m_move_y - md_y;

     //把新div坐标值赋给div对象
     move_div.style.left = ndx+"px";
     move_div.style.top = ndy+"px";

    }

   }

   //鼠标释放
   function up(){
    isDown = false;
   }


  </script>

 </head>
 <body>

  <div id="move_div" onmousedown="down()" onmouseup="up()" onmousemove="move()"></div>

 </body>
</html>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# js鼠标拖拽  # js鼠标拖拽事件  # js拖拽事件  # js实现拖拽效果  # 使用js实现的简单拖拽效果  # JS实现漂亮的窗口拖拽效果(可改变大小、最大化、最小化、关闭)  # JS实现的文件拖拽上传功能示例  # JS实现移动端触屏拖拽功能  # 前端原生js实现拖拽排课效果实例  # 鼠标  # 按下  # 偏移量  # 大家分享  # 具体内容  # 大家多多  # 拖拽  # 把新  # 坐标值  # 新坐标  # div  # position  # absolute  # background  # left  # margin  # padding  # width  # px  # top 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Laravel如何将应用部署到生产服务器_Laravel生产环境部署流程  如何用花生壳三步快速搭建专属网站?  怎么制作网站设计模板图片,有电商商品详情页面的免费模板素材网站推荐吗?  HTML 中动态设置元素 name 属性的正确语法详解  实例解析Array和String方法  北京网页设计制作网站有哪些,继续教育自动播放怎么设置?  HTML5建模怎么导出为FBX格式_FBX格式兼容性及导出步骤【指南】  Laravel如何实现数据导出到PDF_Laravel使用snappy生成网页快照PDF【方案】  Laravel如何实现用户注册和登录?(Auth脚手架指南)  大型企业网站制作流程,做网站需要注册公司吗?  图片制作网站免费软件,有没有免费的网站或软件可以将图片批量转为A4大小的pdf?  Java遍历集合的三种方式  哪家制作企业网站好,开办像阿里巴巴那样的网络公司和网站要怎么做?  Win11怎么开启自动HDR画质_Windows11显示设置HDR选项  Laravel怎么实现微信登录_Laravel Socialite第三方登录集成  北京网站制作公司哪家好一点,北京租房网站有哪些?  Laravel全局作用域是什么_Laravel Eloquent Global Scopes应用指南  如何为不同团队 ID 动态生成多个“认领值班”按钮  如何快速搭建自助建站会员专属系统?  Laravel的HTTP客户端怎么用_Laravel HTTP Client发起API请求教程  使用spring连接及操作mongodb3.0实例  Laravel如何使用Vite进行前端资源打包?(配置示例)  如何批量查询域名的建站时间记录?  黑客如何通过漏洞一步步攻陷网站服务器?  PHP 实现电台节目表的智能时间匹配与今日/明日轮播逻辑  专业商城网站制作公司有哪些,pi商城官网是哪个?  长沙做网站要多少钱,长沙国安网络怎么样?  Laravel怎么配置S3云存储驱动_Laravel集成阿里云OSS或AWS S3存储桶【教程】  WEB开发之注册页面验证码倒计时代码的实现  清除minerd进程的简单方法  佐糖AI抠图怎样调整抠图精度_佐糖AI精度调整与放大细化操作【攻略】  Laravel怎么配置自定义表前缀_Laravel数据库迁移与Eloquent表名映射【步骤】  Laravel API资源类怎么用_Laravel API Resource数据转换  详解一款开源免费的.NET文档操作组件DocX(.NET组件介绍之一)  矢量图网站制作软件,用千图网的一张矢量图做公司app首页,该网站并未说明版权等问题,这样做算不算侵权?应该如何解决?  如何在Windows虚拟主机上快速搭建网站?  如何挑选高效建站主机与优质域名?  如何用手机制作网站和网页,手机移动端的网站能制作成中英双语的吗?  JavaScript如何实现错误处理_try...catch如何捕获异常?  小视频制作网站有哪些,有什么看国内小视频的网站,求推荐?  Laravel怎么实现搜索功能_Laravel使用Eloquent实现模糊查询与多条件搜索【实例】  Laravel队列任务超时怎么办_Laravel Queue Timeout设置详解  韩国网站服务器搭建指南:VPS选购、域名解析与DNS配置推荐  如何在阿里云虚拟机上搭建网站?步骤解析与避坑指南  php后缀怎么变mp4格式错误_修改扩展名提示格式不对怎么办【技巧】  如何快速生成橙子建站落地页链接?  Internet Explorer官网直接进入 IE浏览器在线体验版网址  Python制作简易注册登录系统  深入理解Android中的xmlns:tools属性  如何挑选优质建站一级代理提升网站排名?