使用JavaScript平移DIV元素

我试图在容器中有一个div,当用户单击并拖动文档区域中的某个位置时,按住中间的单击按钮,.room元素将在.viewport元素内平移.

问题出在这里:(按住此键不放,中键由于某种原因无效)
http://jsfiddle.net/JeZj5/2/

JS

var mouseX = 0;
var mouseY = 0;
var scale = 1.0;

$(document).mousemove(function (e) {

    var offset = $('.room').offset();

    //relative mouse x,y
    mouseX = parseFloat((e.pageX - offset.left) / scale, 2);
    mouseY = parseFloat((e.pageY - offset.top) / scale, 2);

    //absolute mouse x,y
    mouseXRaw = e.pageX;
    mouseYRaw = e.pageY;

    $(".room").html(mouseX + ', ' + mouseY + '<br />Right click document and pan');

    switch (e.which) {
        case 3:
            $('.room').css({
                left: mouseX,
                top: mouseY
            });
            break;
    }
    return true;
});

$(document).on('contextmenu', function () {
    return false;
});

解决方法:

这应该更符合您的需求.关键变更:

delta.x = e.pageX - drag.x;
delta.y = e.pageY - drag.y;

使用增量来更改位置. .room的位置应相对于其当前位置移动,减去鼠标拖动位置(反之亦然).

http://jsfiddle.net/X2PZP/3/

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。