美文网首页互联网科技码农的世界Web前端之路
前端开发入门到实战:实现一个div的拖拽效果

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

作者: 4fd9083a87a9 | 来源:发表于2019-05-27 20:45 被阅读0次

实现思路:

  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 欢迎大家进群交流讨论,学习交流,共同进步。
当真正开始学习的时候难免不知道从哪入手,导致效率低下影响继续学习的信心。
但最重要的是不知道哪些技术需要重点掌握,学习时频繁踩坑,最终浪费大量时间,所以有效资源还是很有必要的。

相关文章

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

    实现思路: 鼠标按下开始拖拽 记录摁下鼠标时的鼠标位置以及元素位置 拖动鼠标记下当前鼠标的位置 鼠标当前位置-摁下...

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

    实现思路: 鼠标按下开始拖拽 记录摁下鼠标时的鼠标位置以及元素位置 拖动鼠标记下当前鼠标的位置 鼠标当前位置-摁下...

  • 拖拽div的值到table

    Html 代码 jQeruyUI拖拽效果_拖拽div的值到table表格...

  • 拖拽API

    实现拖拽效果 目前实现拖拽效果 HTML5拖拽 源元素事件例子 目标元素事件 从本地拖放图片到页面中 实现拖拽

  • web前端入门到实战:js实现弹幕效果

    弹幕是一个很常见的功能,下面是本人封装的一个小小的实现方案,存在不足之处可以提出来或自由改进。 直接上代码: 效果...

  • web前端入门到实战:红包效果实现

    效果(网络问题上传不了gif动态图片) CSS HTML JS

  • UniAPP基础

    基于 UniAPP 从入门到社区项目实战 课程背景:咱们作为前端开发人员,单纯的Web 端开发已经慢慢无法满足我们...

  • javascript学习笔记-拖拽效果

    最近开发小程序,用到小程序里的拖拽效果,研究了下底层的原理,发现只要以下三点就可以完成拖拽效果。实现拖拽效果的三个...

  • animation参考

    web前端入门到实战:10分钟入门 CSS3 Animation - 前端天宇的文章 - 知乎https://zh...

  • HTML5实现拖拽

    实现拖拽效果源元素 - 要拖拽的文件目标元素 - 要拖拽到哪里去 目前实现拖拽效果使用原生DOM就能实现 - 最麻...

网友评论

    本文标题:前端开发入门到实战:实现一个div的拖拽效果

    本文链接:https://www.haomeiwen.com/subject/nttttctx.html