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


当前回答

如果元素不可见$(element).offset();和美元(元素).position ();顶部和左侧都返回0,而不是元素的实值。

我必须使用

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

返回所需的信息。 元素的位置为:absolute;

其他回答

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

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

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

$(anotherElement).css(position)

如果元素不可见$(element).offset();和美元(元素).position ();顶部和左侧都返回0,而不是元素的实值。

我必须使用

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

返回所需的信息。 元素的位置为:absolute;

注意,$(element).offset()告诉你一个元素相对于文档的位置。这在大多数情况下都很有效,但在position:fixed的情况下,你可能会得到意想不到的结果。

如果您的文档比视口长,并且您已经垂直滚动到文档的底部,那么您的position:fixed element的offset()值将比您所滚动的预期值大。

如果您正在寻找相对于视口(窗口)的值,而不是位置:fixed元素上的文档,您可以从固定元素的offset()中减去文档的scrollTop()值。最高价值。例子:$ (" # el ") .offset()。$(文档).scrollTop()

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