有没有办法使用jQuery找到元素的绝对位置,即相对于窗口的开头?
答案 0 :(得分:622)
.offset()
将元素的偏移位置作为简单对象返回,例如:
var position = $(element).offset(); // position = { left: 42, top: 567 }
您可以使用此返回值将其他元素定位在同一位置:
$(anotherElement).css(position)
答案 1 :(得分:185)
请注意,$(element).offset()
会告诉您元素相对于文档的位置。这在大多数情况下效果很好,但在 position:fixed
的情况下,您可能会得到意想不到的结果。
如果您的文档长于视口并且您已垂直向文档底部滚动,则position:fixed
元素的offset()
值将更大比您滚动量的预期值。
如果要查找相对于视口(窗口)的值,而不是位置:固定元素上的文档,则可以从固定元素中减去文档的scrollTop()
值元素的offset().top
值。示例:$("#el").offset().top - $(document).scrollTop()
如果position:fixed
元素的偏移父项是文档,则您希望改为阅读parseInt($.css('top'))
。