检索HTML元素的位置(X,Y)
我想知道如何在JavaScript中获取HTML元素(如img
和div
的X和Y位置。
正确的方法是使用element.getBoundingClientRect()
:
var rect = element.getBoundingClientRect();
console.log(rect.top, rect.right, rect.bottom, rect.left);
只要您可能关心,并且最终在CSSOM视图中标准化了,Internet Explorer就已经支持这一功能。 所有其他浏览器很久以前就采用了它。
某些浏览器也会返回高度和宽度属性,虽然这是非标准的。 如果您担心较旧的浏览器兼容性,请检查此答案的修订版以获得优化的降级实施。
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 ) {
var _x = 0;
var _y = 0;
while( el && !isNaN( el.offsetLeft ) && !isNaN( el.offsetTop ) ) {
_x += el.offsetLeft - el.scrollLeft;
_y += el.offsetTop - el.scrollTop;
el = el.offsetParent;
}
return { top: _y, left: _x };
}
var x = getOffset( document.getElementById('yourElId') ).left;
这对我有效(从最高的投票答案修改):
function getOffset(el) {
el = el.getBoundingClientRect();
return {
left: el.left + window.scrollX,
top: el.top + window.scrollY
}
}
使用这个我们可以打电话
getOffset(element).left
要么
getOffset(element).top
链接地址: http://www.djcxy.com/p/299.html