一、body

<div id="box"></div>

二、css

<style>

#box {

  position: abaolute;

  top: 0;

  left: 0;

  width: 100px;

  height: 100px;

}

</style>

三、JavaScript

<script>

  class Drag{

    constructor(el) {

      this.el = el;

      el.startOffset = null;

      el.startPoint = null;

      let move = (e) => {

        this.move(e);

      }

      let end = (e)=>{

        document.removeEventListener('mousemove', move);

        document.removeEventListener('mouseup', end);

      }

      el.addEventListener('mousedown', (e)=>{

        this.start(e);

        document.addEventListener('mousemove', move);

        document.addEventListener('mouseup', end);

      })

    }

    start(e) {

      let {el} = this;

      this.startOffset = {

        x: el.offsetLeft,

        y: el.offsetTop

      }

      this.startPoint = {

        x: e.clientX,

        y: e.clientY

      }

    }

    move(e) {

      let {el, startOffset, startPoint} = this;

      let nowPoint = {

        x: e.clientX,

        y: e.clientY

      }

      let dis = {

        x: nowPoint.x - startPoint.x,

        y: nowPoint.y - startPoint.y

      }

      el.style.left = startOffset.x + dis.x + 'px';

      el.style.top =startOffset.y + dis.y + 'px';

    }

  }

  let box = document.querySelector('#box');

  let drag = new Drag(box);

</script>

JavaScript 面向对象的拖拽的更多相关文章

  1. 每天一个JavaScript实例-html5拖拽

    <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...

  2. day25—JavaScript实现文件拖拽上传案例实践

    转行学开发,代码100天——2018-04-10 今天记录一个利用JavaScript实现文件拖拽上传到浏览器,后天将文件打开的小案例. 基本功能:1点击添加文件 2 文件拖拽添加 html: < ...

  3. JavaScript动画-模拟拖拽

    模拟拖拽的原理: x1等于div.offsetLeft y1等于div.offsetTop x2等于ev.clientX(ev表示event事件) y2等于ev.clientY 当我们在方块上按下鼠标 ...

  4. JavaScript:鼠标拖拽效果

    (之前的那个模板方法模式实在没搞懂...等几天再去研究8) 预览效果: 限制拖动范围在视口内.调整窗口时自动居中... <!DOCTYPE html> <html lang=&quo ...

  5. json方式的面向对象、拖拽

    //json方式的面向对象 var obj= { a:, b:, c:function(){ alert( } } obj.c();//12 //命名空间 var miaov={}; miaov.co ...

  6. JavaScript实现图片拖拽、粘贴上传

    前些日子为老婆做了一个web管理商品的工具,因为商品的图片比较多并且还需要剪裁图,为了上传图片方便加了一个拖拽.粘贴上传的功能. 我已经把代码整理出来放到GitHub上了,有兴趣的朋友可以下来玩玩. ...

  7. javascript实现的拖拽回放

    这个功能很简单,直接贴代码啊: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "ht ...

  8. Javascript之盒子拖拽(跟随鼠标、边界限定、轨迹回放)

    本文通过拖拽案例,实现"跟随鼠标.边界限定.轨迹回放"三大效果: 完整代码中有详尽注释,故不再进行细致讲解: 对于案例中需要注意的重点或易错点问题,会总结在最后. 效果图(仅演示左 ...

  9. 超级简单的利用javascript实现文件拖拽事件

    1.效果图: 2.源码 <%@ page contentType="text/html;charset=UTF-8" language="java" %& ...

随机推荐

  1. oracle中常用的时间格式转换

    1:取得当前日期是本月的第几周  select to_char(sysdate,'YYYYMMDD W HH24:MI:SS') from dual; TO_CHAR(SYSDATE,'YY') se ...

  2. oralce基本select语句

    SELECT  [DISTINCT]  *|{column1,column2,column3. . .}   FROM    table l  select指定查询哪些列的数据. l  column指 ...

  3. Python中的简单实现UDP协议没有粘包问题

    服务端: import socket server=socket.socket(socket.AF_INET,socket.SOCK_DGRAM) #数据报协议->udp server.bind ...

  4. 阿里云POLARDB如何助力轻松筹打造5亿用户信赖的大病筹款平台?

    轻松筹首创了“大病救助”模式,帮助了众多病患在第一时间解決了医疗资金等问题,为了从源头解决了医疗资金问题.而在轻松筹这样全球5.5亿用户信赖的大病筹款平台的背后,是日益增长的各种数据.面对这样数据量所 ...

  5. JDK8中`Optional.orElse()` 和`Optional.orElseGet()`之间的区别

    看例子就明白了 ``` static String B() { System.out.println("B()..."); return "B"; } publ ...

  6. OpenStack Nova启动实例流程

    1.概述 启动一个新的实例,会涉及到OpenStack Nova中的多个组件: API服务器,接收用户端的请求,并且将其传递给云控制器. 云控制器,处理计算节点.网络控制器.API服务器和调度器之前的 ...

  7. Laravel5.1 实现第三方登录认证教程之 - 微信登录

    https://laravel-china.org/topics/2451/laravel51-implementation-of-the-third-party-login-authenticati ...

  8. saltStack_安装和使用

    服务端: yum install -y salt-master 客服端: yum install -y salt-minion 服务端启动: systemctl restartsalt-master ...

  9. PyTorch 学习笔记(四):权值初始化的十种方法

    pytorch在torch.nn.init中提供了常用的初始化方法函数,这里简单介绍,方便查询使用. 介绍分两部分: 1. Xavier,kaiming系列: 2. 其他方法分布 Xavier初始化方 ...

  10. day2_python之字符编码

    一 .计算机基础知识 二.文本编辑器存取文件的原理(nodepad++,pycharm,word) #1.打开编辑器就打开了启动了一个进程,是在内存中的,所以,用编辑器编写的内容也都是存放与内存中的, ...