js拖拽

假设我们把物体1 拖拽到物体2 的地方,此刻可以知道拖拽的步骤是:先鼠标左键点到物体1 然后移动到物体2的地方,松开左键,完成拖拽
当点击的时候,可以通过事件源e.pagaX或者e.pageY获取到鼠标点击的位置,然后通过脚本化css可以获取到物体距离边界的top值和left值。假设物体1的深蓝线条点击处距离物体上边界disY,距离物体左边界为disX,即:disX = e.pageX - box.offsetLeft、disY = e.pageY - box.offsetTop。
上面知道了鼠标点击位置距离物体上\左边界的距离大小,当移动的时候就必须要重新计算物体的top值和left值。即:box.style.left = e.pageX - disX + 'px'; box.style.top = e.pageY - disY + 'px';。这样物体就跟着你的鼠标移动了。
代码入下:

        var box = document.getElementById("box"),
        wrapper = document.getElementById('wrapper');

    function bindEvent(box, wrapper) {
        var X,
            Y,
            boxL,
            boxT,
            disL,
            disT,
            drag = false;
        box.onmousedown = function (e) {
            drag = true;
            var e = e || window.event;
            X = e.pageX;
            Y = e.pageY;
            boxT = box.offsetTop;
            boxL = box.offsetLeft;
            disT = Y - boxT;
            disL = X - boxL;
        }
        wrapper.onmousemove = function (e) {
            var e = e || window.event;
            if (drag) {
                box.style.left = e.pageX - disL + 'px';
                box.style.top = e.pageY - disT + 'px';
            }
        }
        box.onmouseup = function () {
            drag = false;
        }
    }
    bindEvent(box, wrapper);
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 标题为啥写vue呢?原因我的这个功能是在vue的项目里面的,然而实际上是用js实现的,与vue并无太大的关系。 如...
    你猜_3214阅读 1,412评论 0 1
  • //获取到box元素 var box = document.querySelector('.box'); ...
    别来无恙_ly阅读 516评论 0 1
  • 前言 本文依据半年前本人的分享《浅谈js拖拽》撰写,算是一篇迟到的文章。 基本思路 虽然现在关于拖拽的组件库到处都...
    lanberts阅读 2,939评论 0 0
  • *{margin: 0;padding: 0;} body,ul,li{margin:0;padding:0;...
    岳小弟阅读 1,545评论 0 0
  • 1.“工欲善其事必先利其器”时间管理工具的重要性 2.管理时间就是管理事件 3.运用手机为主,纸笔为短期中期(随身...
    Lulugwh阅读 181评论 0 0

友情链接更多精彩内容