JavaScript如何通过点击和拖动动态移动div

标签 javascript html onmousedown

好吧,看起来应该很简单。我需要使用一个已经存在的 div 并根据鼠标在窗口中的位置移动它。我到处搜索,这让我找到了做同样事情的过于复杂的方法,并且涉及到 j-query 的使用。我需要严格使用 javascript 来完成我要做的事情。

方法:

var mousePosition;
var div;

(function createDiv(){

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

    div.addEventListener('mousedown', handleKeyPressed, true);

    document.body.appendChild(div);


})();

function handleKeyPressed(event) {

    event.preventDefault();

    mousePosition = {

        x : event.clientX,
        y : event.clientY

    };

    div.style.left = mousePosition.x;
    div.style.top = mousePosition.y;

    //alert("whoa!");

}

最佳答案

我想你正在寻找更像这样的东西

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

关于JavaScript如何通过点击和拖动动态移动div,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24050738/

相关文章:

javascript - 访问名称部分为变量的数组

javascript - 如何仅使用 CSS 动态更改与父宽度相关的元素宽度?

php - 需要修复文件上传后停止页面重新加载的问题

javascript - 在 onmousedown 的 Raphael 函数中包含 labelPath

Javascript 函数绑定(bind)问题

javascript - 如何在焦点事件中动态添加元素下方的跨度?

javascript - jQuery 包装语法

html - 在 css 中混合颜色与叠加划分

cocoa - mouseDown 方法中出现异常

javascript - 触摸屏激活时 onmousedown 和 onmouseup 不起作用