我如何使用jQuery找到一个元素的绝对位置?

是否有一种方法找到一个元素的绝对位置,即相对于窗口的开始,使用jQuery?

387211 次浏览

.offset()将返回一个元素的偏移位置作为一个简单对象,例如:

var position = $(element).offset(); // position = { left: 42, top: 567 }

你可以使用这个返回值来定位其他元素在同一位置:

$(anotherElement).css(position)

注意,$(element).offset()告诉你元素相对于文档的位置。这在大多数情况下工作得很好,但在position:fixed的情况下,你可以得到意想不到的结果。

如果你的文档是比视口长,并且你已经垂直滚动到文档的底部,那么你的position:fixed元素的offset()将大于就是你所滚动的期望值。

如果你正在寻找一个值相对于视口 (window),而不是位置:fixed元素上的文档,你可以从固定元素的offset().top值中减去文档的scrollTop()值。例如:$("#el").offset().top - $(document).scrollTop()

如果position:fixed元素的偏移父元素是文档,则应该读取parseInt($.css('top'))

如果元素不可见,$(element).offset();$(element).position();0返回给topleft,而不是元素的实值。

我必须使用

parseInt($(element).css("top"))
parseInt($(element).css("left"))

返回所需的信息。 元素有position: absolute;.

.

.