JavaScript How to Dynamically Move Div by Clicking and Dragging

前端 未结 6 1913
滥情空心
滥情空心 2020-12-23 14:06

Okay it would seem like it should be simple. I need to take an already existing div and move it according to mouse position within the window. I have searched everywhere and

6条回答
  •  猫巷女王i
    2020-12-23 14:44

    I think you're looking for something more like this

    var mousePosition;
    var offset = [0,0];
    var div;
    var isDown = false;
    
    div = document.createElement("div");
    div.style.position = "absolute";
    div.style.left = "0px";
    div.style.top = "0px";
    div.style.width = "100px";
    div.style.height = "100px";
    div.style.background = "red";
    div.style.color = "blue";
    
    document.body.appendChild(div);
    
    div.addEventListener('mousedown', function(e) {
        isDown = true;
        offset = [
            div.offsetLeft - e.clientX,
            div.offsetTop - e.clientY
        ];
    }, true);
    
    document.addEventListener('mouseup', function() {
        isDown = false;
    }, true);
    
    document.addEventListener('mousemove', function(event) {
        event.preventDefault();
        if (isDown) {
            mousePosition = {
    
                x : event.clientX,
                y : event.clientY
    
            };
            div.style.left = (mousePosition.x + offset[0]) + 'px';
            div.style.top  = (mousePosition.y + offset[1]) + 'px';
        }
    }, true);
    

    FIDDLE

提交回复
热议问题