JavaScript实现拖拽功能


Posted in Javascript onFebruary 11, 2020

本文实例为大家分享了JavaScript实现拖拽功能的具体代码,供大家参考,具体内容如下

盒子拖拽—运用到的有onmousedown事件,onmousemove事件以及onmouseup事件

1、当鼠标点击下去的时候我们需要获取鼠标所在位置的横纵坐标,然后获取盒子的离页面的横纵方向的距离
2、计算出鼠标相对盒子的距离
3、当鼠标移动的时候,获取鼠标移动的距离,在永鼠标此刻的位置减去鼠标相对盒子的距离,获得的是盒子此刻的坐标位置
4、将这个位置赋值给盒子
5、鼠标抬起,清除鼠标移动事件;

代码:

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <meta name="viewport" content="width=device-width, initial-scale=1.0">
 <meta http-equiv="X-UA-Compatible" content="ie=edge">
 <title>鼠标拖拽</title>
 <style>
  .box{
   background-color: pink;
   width:200px;
   height:200px;
   border-radius: 50%;
   position: absolute;
   top:20px;
   left:100px;
  }
 </style>
</head>
<body>
 <div class="box">

 </div>
 <script>
  window.onload = function(){
   var box = document.getElementsByClassName('box')[0];
   function drag (ele){
    ele.onmousedown = function(e){
     var e = e || window.event; 
     //此处是为了兼容IE,因为IE中事件对象是作为全局对象( window.event )存在的;
     var pageX = e.pageX || e.clientX + document.documentElement.scrollLeft;
     var pageY = e.pageY || e.clientY + document.documentElement.scrollTop;
     //获取鼠标相对盒子的位置;
     var boxX = pageX - box.offsetLeft;
     var boxY = pageY - box.offsetTop;
     document.onmousemove = function(e){
      var e = e || window.event;
      var pageX = e.pageX || e.clientX + document.documentElement.scrollLeft;
      var pageY = e.pageY || e.clientY + document.documentElement.scrollTop;
      //将鼠标当前的坐标值减去鼠标相对盒子的位置,得到盒子当时的位置并将其赋值给盒子,实现移动效果
      box.style.left = pageX - boxX +'px';
      box.style.top = pageY - boxY + 'px';
     }
    };
    document.onmouseup = function () {
     //清除盒子的移动事件;
     document.onmousemove = null;
    };
   } ;
   drag(box)
  }
 </script>
</body>
</html>

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

Javascript 相关文章推荐
javascript学习笔记(十) js对象 继承
Jun 19 Javascript
innerText和textContent对比及使用介绍
Feb 27 Javascript
javascript中注册和移除事件的4种方式
Mar 20 Javascript
jQuery 设置 CSS 属性示例介绍
Jan 16 Javascript
js实现获取当前时间是本月第几周的方法
Aug 11 Javascript
js右下角弹出提示框示例代码
Jan 12 Javascript
总结Node.js中的一些错误类型
Aug 15 Javascript
微信小程序 在线支付功能的实现
Mar 14 Javascript
Angularjs实现上传图片预览功能
Sep 01 Javascript
浅析vue-router中params和query的区别
Dec 24 Javascript
vue实现五子棋游戏
May 28 Javascript
原生JS实现音乐播放器的示例代码
Feb 25 Javascript
node.js中 mysql 增删改查操作及async,await处理实例分析
Feb 11 #Javascript
基于Angular 8和Bootstrap 4实现动态主题切换的示例代码
Feb 11 #Javascript
原生js实现点击轮播切换图片
Feb 11 #Javascript
node.js中process进程的概念和child_process子进程模块的使用方法示例
Feb 11 #Javascript
小程序如何定位所在城市及发起周边搜索
Feb 11 #Javascript
JS+DIV实现拖动效果
Feb 11 #Javascript
vue项目中使用particles实现粒子背景效果及遇到的坑(按钮没有点击响应)
Feb 11 #Javascript
You might like
extjs 的权限问题 要求控制的对象是 菜单,按钮,URL
2010/03/09 Javascript
jquery动画2.元素坐标动画效果(创建一个图片走廊)
2012/08/24 Javascript
Microsfot .NET Framework4.0框架 安装失败的解决方法
2013/08/14 Javascript
jquery中插件实现自动添加用户的具体代码
2013/11/15 Javascript
判断字符串的长度(优化版)中文占两个字符
2014/10/30 Javascript
深入理解JavaScript系列(38):设计模式之职责链模式详解
2015/03/04 Javascript
JQuery中DOM实现事件移除的方法
2015/06/13 Javascript
对jquery的ajax进行二次封装以及ajax缓存代理组件:AjaxCache详解
2016/04/11 Javascript
深入解析Backbone.js框架的依赖库Underscore.js的作用
2016/05/07 Javascript
SelectPage v2.4 发布新增纯下拉列表和关闭分页功能
2017/09/07 Javascript
JS实现点击循环切换显示内容的方法
2017/10/19 Javascript
vue 运用mock数据的示例代码
2017/11/07 Javascript
Vue Router的懒加载路径的解决方法
2018/06/21 Javascript
通过vue-cli3构建一个SSR应用程序的方法
2018/09/13 Javascript
基于JavaScript实现猜数字游戏代码实例
2020/07/30 Javascript
布同 统计英文单词的个数的python代码
2011/03/13 Python
Python使用Supervisor来管理进程的方法
2015/05/28 Python
python抽象基类用法实例分析
2015/06/04 Python
python实现批量下载新浪博客的方法
2015/06/15 Python
Django的session中对于用户验证的支持
2015/07/23 Python
python3实现磁盘空间监控
2018/06/21 Python
python 怎样将dataframe中的字符串日期转化为日期的方法
2019/09/26 Python
Python监控服务器实用工具psutil使用解析
2019/12/19 Python
Python GUI编程学习笔记之tkinter事件绑定操作详解
2020/03/30 Python
Python flask框架端口失效解决方案
2020/06/04 Python
python时间序列数据转为timestamp格式的方法
2020/08/03 Python
将不规则的Python多维数组拉平到一维的方法实现
2021/01/11 Python
selenium如何定位span元素的实现
2021/01/13 Python
CSS3地图动态实例代码(圆圈向外扩散)
2018/06/15 HTML / CSS
AmazeUI中各种的导航式菜单与解决方法
2020/08/19 HTML / CSS
考博专家推荐信模板
2013/12/02 职场文书
水电工岗位职责
2014/02/12 职场文书
廉洁使者实施方案
2014/03/29 职场文书
公司致全体员工的感谢信
2019/06/24 职场文书
JS一分钟在github+Jekyll的博客中添加访问量功能的实现
2021/04/03 Javascript
CSS极坐标的实例代码
2021/06/03 HTML / CSS