【发布时间】:2010-10-15 13:30:37
【问题描述】:
有没有办法使用jQuery找到元素的绝对位置,即相对于窗口的开始位置?
【问题讨论】:
标签: javascript jquery
有没有办法使用jQuery找到元素的绝对位置,即相对于窗口的开始位置?
【问题讨论】:
标签: javascript jquery
.offset() 会将元素的偏移位置作为简单对象返回,例如:
var position = $(element).offset(); // position = { left: 42, top: 567 }
您可以使用此返回值将其他元素定位在同一位置:
$(anotherElement).css(position)
【讨论】:
offset() 没有返回正确的顶部坐标。相反,它返回比文档中元素的顶部坐标多 300 像素。为什么??
请注意,$(element).offset() 告诉您元素的位置相对于文档。这在大多数情况下都很有效,但在 position:fixed 的情况下,您可能会得到意想不到的结果。
如果您的文档比视口长并且您已经垂直滚动到文档的底部,那么您的position:fixed 元素的offset() 值将大于 滚动量的预期值。
如果您正在寻找一个相对于视口(窗口)的值,而不是位置:固定元素上的文档,您可以从固定元素的 @ 中减去文档的 scrollTop() 值987654326@ 值。示例:$("#el").offset().top - $(document).scrollTop()
如果position:fixed 元素的偏移父元素是文档,您想改为读取parseInt($.css('top'))。
【讨论】:
$(document).scrollTop()