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 相关文章推荐
IE8 浏览器Cookie的处理
Jan 31 Javascript
javascript事件问题
Sep 05 Javascript
JavaScript实现页面跳转的几种常用方式
Nov 28 Javascript
JQuery的attr 与 val区别
Jun 12 Javascript
bootstrap快速制作后台界面
Dec 05 Javascript
jQuery操作json常用方法示例
Jan 04 Javascript
JS简单获得节点元素的方法示例
Feb 10 Javascript
使用vue打包时vendor文件过大或者是app.js文件很大的问题
Jun 29 Javascript
Vue渲染过程浅析
Mar 14 Javascript
ElementUI Tag组件实现多标签生成的方法示例
Jul 08 Javascript
jquery html添加元素/删除元素操作实例详解
May 20 jQuery
JavaScript实现网页下拉菜单效果
Nov 20 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
PHP结合Ueditor并修改图片上传路径
2016/10/16 PHP
js tab效果的实现代码
2009/12/26 Javascript
jQuery EasyUI 中文API Button使用实例
2010/04/14 Javascript
JavaScript高级程序设计(第3版)学习笔记10 再访js对象
2012/10/11 Javascript
js与jquery获取父元素,删除子元素的两种不同方法
2014/01/09 Javascript
基于JQuery实现的Select级联
2014/01/27 Javascript
JS获取鼠标坐标位置实例分析
2016/01/20 Javascript
JS表格组件神器bootstrap table详解(强化版)
2016/05/26 Javascript
jQuery实现鼠标经过时高亮,同时其他同级元素变暗的效果
2016/09/18 Javascript
微信小程序实现自动定位功能
2018/10/31 Javascript
Vue注册组件命名时不能用大写的原因浅析
2019/04/25 Javascript
JavaScript中的垃圾回收与内存泄漏示例详解
2019/05/02 Javascript
jquery+css实现Tab栏切换的代码实例
2019/05/14 jQuery
node实现爬虫的几种简易方式
2019/08/22 Javascript
layui table 表格模板按钮的实例代码
2019/09/21 Javascript
javascript中的相等操作符(==与===区别)
2019/12/21 Javascript
如何实现echarts markline标签名显示自己想要的
2020/07/20 Javascript
[00:59]PWL开团时刻DAY7——我在赶
2020/11/06 DOTA
Python 可爱的大小写
2008/09/06 Python
python实现随机密码字典生成器示例
2014/04/09 Python
python3制作捧腹网段子页爬虫
2017/02/12 Python
Python多线程中阻塞(join)与锁(Lock)使用误区解析
2018/04/27 Python
python多进程使用及线程池的使用方法代码详解
2018/10/24 Python
python ipset管理 增删白名单的方法
2019/01/14 Python
基于django ManyToMany 使用的注意事项详解
2019/08/09 Python
在macOS上搭建python环境的实现方法
2019/08/13 Python
使用python 计算百分位数实现数据分箱代码
2020/03/03 Python
阻止移动设备(手机、pad)浏览器双击放大网页的方法
2014/06/03 HTML / CSS
HTML5 canvas基本绘图之图形组合
2016/06/27 HTML / CSS
c语言常见笔试题总结
2016/09/05 面试题
DIY蛋糕店的创业计划书范文
2013/12/26 职场文书
公司经理聘任书
2014/03/29 职场文书
保密工作目标责任书
2014/07/28 职场文书
广告设计专业毕业生自我鉴定
2014/09/27 职场文书
如何用JS实现简单的数据监听
2021/05/06 Javascript
SQL实现LeetCode(197.上升温度)
2021/08/07 MySQL