检索 HTML 元素的位置 (X,Y)
2022-08-29 21:53:51
我想知道如何获得HTML元素的X和Y位置,例如JavaScript中的和。img
div
我想知道如何获得HTML元素的X和Y位置,例如JavaScript中的和。img
div
正确的方法是使用 element.getBoundingClientRect()
:
var rect = element.getBoundingClientRect();
console.log(rect.top, rect.right, rect.bottom, rect.left);
Internet Explorer一直支持这一点,只要你可能关心,它最终在CSSOM视图中标准化。所有其他浏览器很久以前就采用了它。
某些浏览器还会返回高度和宽度属性,尽管这是非标准的。如果您担心较旧的浏览器兼容性,请查看此答案的修订版,以获取优化的降级实现。
返回的值是相对于视区的。如果您需要它相对于另一个元素,只需从另一个矩形中减去一个矩形:element.getBoundingClientRect()
var bodyRect = document.body.getBoundingClientRect(),
elemRect = element.getBoundingClientRect(),
offset = elemRect.top - bodyRect.top;
alert('Element is ' + offset + ' vertical pixels from <body>');
此函数返回元素相对于整个文档(页面)的位置:
function getOffset(el) {
const rect = el.getBoundingClientRect();
return {
left: rect.left + window.scrollX,
top: rect.top + window.scrollY
};
}
使用这个我们可以得到X位置:
getOffset(element).left
...或 Y 位置:
getOffset(element).top