javascript - 如何获取相对于滚动框的 DOM 元素 [x,y] 坐标?

标签 javascript dom

如何在 JavaScript 中获取 DOM 元素 [x,y] 坐标? 具体来说,是滚动框中按钮的坐标。

我找到了这个offsetLeft属性:

var elements = scroll.children; // with 12 children
if (!elements.item(2)) {
    print("no element");
}
else if (!elements.item(2).offsetLeft) {
    print("no attribute");
}
else {
    print(elements.item(2).offsetLeft);
}

但它打印“无属性”...

顺便说一句,它适用于 Mozilla 环境。

最佳答案

尝试这样的事情:

// Based on code from http://www.quirksmode.org/js/findpos.html
function FindElementDocumentPosition(element) {
  var left = 0;
  var top = 0;
  var lastElement = element;
  if (element.offsetParent) {
    left += element.offsetLeft;
    top += element.offsetTop;
    element = element.offsetParent;
    while (element) {
      left += element.offsetLeft;
      top += element.offsetTop;
      left -= element.scrollLeft;
      top -= element.scrollTop;
      lastElement = element;
      element = element.offsetParent;
    }
  }
  // Adjust for document scroll position
  var agent = navigator.userAgent.toLowerCase();
  if (!PageInStandardsMode() || (agent.indexOf('firefox') == -1)) {
    var leftAdjust = document.body.scrollLeft || document.documentElement.scrollLeft;
    var topAdjust = document.body.scrollTop || document.documentElement.scrollTop;
    left += leftAdjust;
    top += topAdjust;
  }
  return {
    x: left,
    y: top
  };
}

关于javascript - 如何获取相对于滚动框的 DOM 元素 [x,y] 坐标?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3787690/

相关文章:

javascript - 缺少区域设置 "ru"Angular 5 的区域设置数据

javascript - 函数是真值?

javascript - document.getElementById 访问 HEAD id ="head"时出现问题

javascript - CSS/Javascript 旋转框

javascript - 如何组合多个选择器?

javascript - 使用 Javascript 在标签中的内容之前附加元素

javascript - 如何确定 Chrome 窗口是否通过 Chrome 扩展程序最小化

javascript - 如何使用jquery动态生成的id来获取标签的值

javascript - 在 VueJS 中观察元素的高度

javascript - 从 iframe 获取文本