获取div元素的X和Y坐标

Jef*_*mer 12 javascript drag-and-drop

我一直在尝试制作一个javascript来获取div元素的X和Y坐标.经过一些尝试后我得到了一些数字,但我不知道如何验证它们的确切位置(脚本将X返回168,Y返回258)我正在运行屏幕分辨率为1280的脚本x 800.这是我用来获得此结果的脚本:

function get_x(div) {
    var getY;
    var element = document.getElementById("" + div).offsetHeight;
    var get_center_screen = screen.width / 2;

    document.getElementById("span_x").innerHTML = element;
    return getX;
}

function get_y(div) {
    var getY;
    var element = document.getElementById("" + div).offsetWidth;
    var get_center_screen = screen.height / 2;

    document.getElementById("span_y").innerHTML = element;
    return getY;
}?
Run Code Online (Sandbox Code Playgroud)

现在的问题是.假设这些是函数返回的精确坐标是否合理,或者是否容易在该位置产生一些东西以确定它究竟是什么?

最后,我将如何使这个div元素移动?我知道我应该使用一个mousedown事件处理程序和一段时间来继续移动元素但是任何提示/提示都非常感谢我最关心的是如何在循环运行时获得它.

kat*_*ugh 27

到目前为止,获取元素的绝对屏幕位置的最简单方法是getBoundingClientRect.

var element = document.getElementById('some-id');
var position = element.getBoundingClientRect();
var x = position.left;
var y = position.top;
// Et voilà!
Run Code Online (Sandbox Code Playgroud)

但请记住,坐标不包括文档滚动偏移.


Tha*_*ama 5

这是获取有关html元素位置的各种信息的简单方法:

        var my_div = document.getElementById('my_div_id');
        var box = { left: 0, top: 0 };
        try {
            box = my_div.getBoundingClientRect();
        } 
        catch(e) 
        {}

        var doc = document,
            docElem = doc.documentElement,
            body = document.body,
            win = window,
            clientTop  = docElem.clientTop  || body.clientTop  || 0,
            clientLeft = docElem.clientLeft || body.clientLeft || 0,
            scrollTop  = win.pageYOffset || jQuery.support.boxModel && docElem.scrollTop  || body.scrollTop,
            scrollLeft = win.pageXOffset || jQuery.support.boxModel && docElem.scrollLeft || body.scrollLeft,
            top  = box.top  + scrollTop  - clientTop,
            left = box.left + scrollLeft - clientLeft;
Run Code Online (Sandbox Code Playgroud)