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);

你可能感兴趣的:(js拖拽)