javascript - 如何获取具有绝对位置的元素的绝对坐标(JavaScript,浏览器)

标签 javascript html position interact.js

我在获取元素中心的坐标时遇到了一些问题,该元素也是具有绝对位置的其他元素的子元素。 Here you can see a screenshot with the order of elements.

要更好地了解问题,您可以访问我的 repository at GitHub. index.html 位于文件夹“/Resources”中

所以,我在其他一些可拖动窗口中有一些可拖动窗口(带有 interact.js),我想通过 lines-div 连接它们的中心(它们是使用 div 进行一些转换绘制的)。

我使用 this method渲染线条(也许这里有一些问题)。我曾尝试使用 jsPlumb 来绘制线条,但我失败了:(

得到点x和y。

// bottom right        
var x1 = offset1.left - margin1.left + size1.width/2 - (this.dom.getAttribute('data-x') || 0);
var y1 = offset1.top - margin1.top + size1.height/2 - (this.dom.getAttribute('data-y') || 0);
// top right
var x2 = offset2.left - margin2.left + size2.width/2 - (this.dom.getAttribute('data-x') || 0);
var y2 = offset2.top - margin2.top + size2.height/2 - (this.dom.getAttribute('data-y') || 0);

(this.dom.getAttribute('data-x') || 0) - 用于 Interact.js。

function getMargins(elem) {
    var top = 0, left = 0;
    while (elem.parentNode) {
        top = top + parseFloat(window.getComputedStyle(elem).marginTop.replace('px', ''));
        left = left + parseFloat(window.getComputedStyle(elem).marginLeft.replace('px', ''));
        elem = elem.parentNode;
    }

    return { top: Math.round(top), left: Math.round(left) }
}

function getOffsetRect(elem) {
    // (1)
    var box = elem.getBoundingClientRect()

    // (2)
    var body = document.body
    var docElem = document.documentElement

    // (3)
    var scrollTop = window.pageYOffset || docElem.scrollTop || body.scrollTop
    var scrollLeft = window.pageXOffset || docElem.scrollLeft || body.scrollLeft

    // (4)
    var clientTop = docElem.clientTop || body.clientTop || 0
    var clientLeft = docElem.clientLeft || body.clientLeft || 0

    // (5)
    var top = box.top + scrollTop - clientTop
    var left = box.left + scrollLeft - clientLeft

    return { top: Math.round(top), left: Math.round(left) }
}

你能帮我获取中心坐标吗?提前致谢

最佳答案

试试这个..效果最好

 function getPos(el) {
     var rect=el.getBoundingClientRect();
     return {x:rect.left,y:rect.top};
 }

像这样使用它:

 var coords = getPos(document.querySelector("el"));
 alert(coords.x);alert(coords.y);

关于javascript - 如何获取具有绝对位置的元素的绝对坐标(JavaScript,浏览器),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37975457/

相关文章:

html - 输入类型文件的响应式输入图标

javascript - 停止 Chrome 自动完成下拉菜单获得焦点

CSS: "right"属性拒绝申请?

css - 菜单中的第 3 级始终位于最顶层

javascript - 提高事件密集型防暴应用程序的代码质量/组织

javascript - MathML 未呈现并显示在文本区域下方

javascript - 如何基于值(value)展示

javascript - 如何在 Google 饼图图例中添加百分比和总计

html - 向右浮动属性 block 另一个 div

jQuery追加()定位