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 相关文章推荐
JQuery与JSon实现的无刷新分页代码
Sep 13 Javascript
js遍历td tr等html元素
Dec 13 Javascript
告诉你什么是javascript的回调函数
Sep 04 Javascript
jQuery中innerWidth()方法用法实例
Jan 19 Javascript
js实现分割上传大文件
Mar 09 Javascript
Javascript缓存API
Jun 14 Javascript
easy ui datagrid 从编辑框中获取值的方法
Feb 22 Javascript
JScript实现地址选择功能
Aug 15 Javascript
判断iOS、Android以及PC端的示例代码
Nov 15 Javascript
如何在vue里面优雅的解决跨域(路由冲突问题)
Jan 20 Javascript
layerui代码控制tab选项卡,添加,关闭的实例
Sep 04 Javascript
vue实现文字加密功能
Sep 27 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:风雨欲来 路在何方?
2006/10/09 PHP
PHP Global定义全局变量使用说明
2013/08/15 PHP
thinkphp修改配置进入默认首页的方法
2017/02/07 PHP
yii2 数据库读写分离配置示例
2017/02/10 PHP
取得一定长度的内容,处理中文
2006/12/20 Javascript
javascript高级学习笔记整理
2011/08/14 Javascript
JavaScript字符串插入、删除、替换函数使用示例
2013/07/25 Javascript
模拟一个类似百度google的模糊搜索下拉列表
2014/04/15 Javascript
JavaScript获取DOM元素的11种方法总结
2015/04/25 Javascript
JavaScript实现打字效果的方法
2015/07/10 Javascript
Javascript基于对象三大特性(封装性、继承性、多态性)
2016/01/04 Javascript
Node.js中使用jQuery的做法
2016/08/17 Javascript
浅谈如何使用 webpack 优化资源
2017/10/20 Javascript
vue计算属性及使用详解
2018/04/02 Javascript
vue.js学习笔记之v-bind和v-on解析
2018/05/03 Javascript
JavaScript 对引擎、运行时、调用堆栈的概述理解
2018/10/22 Javascript
详解React 服务端渲染方案完美的解决方案
2018/12/14 Javascript
JS查找孩子节点简单示例
2019/07/25 Javascript
KnockoutJS数组比较算法实例详解
2019/11/25 Javascript
vue 使用async写数字动态加载效果案例
2020/07/18 Javascript
Python3使用requests发闪存的方法
2016/05/11 Python
Python实现基于C/S架构的聊天室功能详解
2018/07/07 Python
python实现弹跳小球
2019/05/13 Python
Python3之字节串bytes与字节数组bytearray的使用详解
2019/08/27 Python
在pycharm中显示python画的图方法
2019/08/31 Python
python argparse传入布尔参数false不生效的解决
2020/04/20 Python
python中Array和DataFrame相互转换的实例讲解
2021/02/03 Python
python中最小二乘法详细讲解
2021/02/19 Python
公司企业表扬信
2014/01/11 职场文书
公司离职证明范本
2014/01/13 职场文书
采购助理岗位职责
2014/02/16 职场文书
迟到检讨书2000字(精选篇)
2014/10/07 职场文书
困难补助申请报告
2015/05/19 职场文书
趣味运动会口号
2015/12/24 职场文书
Go 在 MongoDB 中常用查询与修改的操作
2021/05/07 Golang
Go 语言结构实例分析
2021/07/04 Golang