使用javaScript实现鼠标拖拽事件


Posted in Javascript onApril 03, 2020

本文实例为大家分享了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>

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

Javascript 相关文章推荐
javascript中最常用的继承模式 组合继承
Aug 12 Javascript
jQuery插件 selectToSelect使用方法
Oct 02 Javascript
JS比较2个日期间隔的示例代码
Apr 15 Javascript
JS获取随机数和时间转换的简单实例
Jul 10 Javascript
AngularJS中的JSONP实例解析
Dec 01 Javascript
如何获取元素的最终background-color
Feb 06 Javascript
JavaScript+Html5实现按钮复制文字到剪切板功能(手机网页兼容)
Mar 30 Javascript
ES6 迭代器(Iterator)和 for.of循环使用方法学习(总结)
Feb 08 Javascript
webpack优化之代码分割与公共代码提取详解
Nov 22 Javascript
js表达式与运算符简单操作示例
Feb 15 Javascript
解决微信授权成功后点击按返回键出现空白页和报错的问题
Jun 08 Javascript
vue 使用vant插件做tabs切换和无限加载功能的实现
Nov 04 Javascript
vue-cli项目中怎么使用mock数据
Sep 27 #Javascript
javaScript实现复选框全选反选事件详解
Nov 20 #Javascript
javaScript实现滚动条事件详解
Mar 24 #Javascript
详解vue-cil和webpack中本地静态图片的路径问题解决方案
Sep 27 #Javascript
深入掌握 react的 setState的工作机制
Sep 27 #Javascript
JavaScript 保护变量不被随意修改的实现代码
Sep 27 #Javascript
JavaScript实现打印星型金字塔功能实例分析
Sep 27 #Javascript
You might like
PHP6 中可能会出现的新特性预览
2014/04/04 PHP
CI(CodeIgniter)框架介绍
2014/06/09 PHP
php脚本运行时的超时机制详解
2016/02/17 PHP
PHP基于ICU扩展intl快速实现汉字转拼音及按拼音首字母分组排序的方法
2017/05/03 PHP
在 Laravel 6 中缓存数据库查询结果的方法
2019/12/11 PHP
IE 上下滚动展示模仿Marquee机制
2009/12/20 Javascript
jQuery(js)获取文字宽度(显示长度)示例代码
2013/12/31 Javascript
深入理解JavaScript系列(36):设计模式之中介者模式详解
2015/03/04 Javascript
javascript中动态函数用法实例分析
2015/05/14 Javascript
js replace(a,b)之替换字符串中所有指定字符的方法
2016/08/17 Javascript
详解angular用$sce服务来过滤HTML标签
2017/04/11 Javascript
vue树形结构获取键值的方法示例
2018/06/21 Javascript
微信小程序 WXML节点信息查询详解
2019/07/29 Javascript
javascript写一个ajax自动拦截并下载数据代码实例
2019/09/07 Javascript
JS原型prototype和__proto__用法实例分析
2020/03/14 Javascript
vue实现公告栏文字上下滚动效果的示例代码
2020/06/16 Javascript
Python批量修改文件后缀的方法
2014/01/26 Python
Windows下python2.7.8安装图文教程
2016/05/26 Python
轻松理解Python 中的 descriptor
2017/09/15 Python
python+selenium实现京东自动登录及秒杀功能
2017/11/18 Python
对Tensorflow中的变量初始化函数详解
2018/07/27 Python
python爬取微信公众号文章
2018/08/31 Python
Django+uni-app实现数据通信中的请求跨域的示例代码
2019/10/12 Python
使用python实现下载我们想听的歌曲,速度超快
2020/07/09 Python
Python自动化之UnitTest框架实战记录
2020/09/08 Python
土耳其国际性时尚购物网站:Modanisa
2018/01/19 全球购物
Zooplus葡萄牙:欧洲领先的网上宠物商店
2018/07/01 全球购物
项目经理岗位职责
2013/11/11 职场文书
自主招生教师推荐信
2014/05/10 职场文书
社区两委对照检查材料
2014/08/23 职场文书
孩子教育的心得体会
2014/09/01 职场文书
校运动会广播稿(100篇)
2014/09/12 职场文书
2014年汽车销售工作总结
2014/12/01 职场文书
2015年小学实验室工作总结
2015/07/28 职场文书
《我的伯父鲁迅先生》教学反思
2016/02/16 职场文书
比较node.js和Deno
2021/04/27 Javascript