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

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

实现思路:

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

代码:

web前台开发学习Q-q-u-n: 731771211,分享学习的方法和需要注意的小细节,不停升级最新的教程和学习方法(详细的前台项目实战教学视频)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);})()

自己是一个五年的前台工程师,希望本文对你有帮助!

这里推荐一下我的前台学习交流扣qun:731771211 ,里面都是学习前台的,假如你想制作酷炫的网页,想学习编程。自己整理了一份2019最全面前台学习资料,从最基础的HTML+CSS+JS【炫酷特效,游戏,插件封装,设计模式】到手机端HTML5的项目实战的学习资料都有整理,送给每一位前台小伙伴,每天分享技术

点击:加入

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

发表回复