前台开发入门到实战:实现一个div的拖拽效果

作者 : 开心源码 本文共1098个字,预计阅读时间需要3分钟 发布时间: 2022-05-12 共213人阅读

实现思路:

  1. 鼠标按下开始拖拽
  2. 记录摁下鼠标时的鼠标位置以及元素位置
  3. 拖动鼠标记下当前鼠标的位置
  4. 鼠标当前位置-摁下时鼠标位置= 鼠标移动距离
  5. 元素位置= 鼠标移动距离+鼠标摁下时元素的位置

代码:

class Drag {    //构造函数    constructor(el) {        this.el = el;        //鼠标摁下时的元素位置        this.startOffset = {};        //鼠标摁下时的鼠标位置        this.startPoint = {};        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 newPoint = {            x: e.clientX,            y: e.clientY        }        let dis = {            x: newPoint.x - startPoint.x,            y: newPoint.y - startPoint.y,        }        el.style.left = dis.x + startOffset.x + "px";        el.style.top = dis.y + startOffset.y + "px";    }}(function () {    let box = document.querySelector("#box");    let dragbox = new Drag(box);})()

为了帮助大家让学习变得轻松、高效,给大家免费分享一大批资料,帮助大家在成为前台工程师,乃至全栈工程师的路上披荆斩棘。在这里给大家推荐一个前台全栈学习圈:784783012 欢迎大家进群交流探讨,学习交流,共同进步。
当真正开始学习的时候难免不知道从哪入手,导致效率低下影响继续学习的信心。
但最重要的是不知道哪些技术需要重点掌握,学习时频繁踩坑,最终白费大量时间,所以有效资源还是很有必要的。

说明
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » 前台开发入门到实战:实现一个div的拖拽效果

发表回复