Answers:
它们是否相同取决于上下文。
position
返回相对于偏移父级的{left: x, top: y}
对象
offset
返回相对于文档的{left: x, top: y}
对象。
显然,如果文档是偏移父级(通常是这种情况),则它们将是相同的。的偏移父是“最接近的定位含有元素”。
例如,对于此文档:
<div style="position: absolute; top: 200; left: 200;">
<div id="sub"></div>
</div>
然后$('#sub').offset()
将会是{left: 200, top: 200}
,但是.position()
将会是{left: 0, top: 0}
。
sub
绝对位置设置为0:0,则它将位于偏移父级的左上角。
.position
得到了在1.12.0 =>更新github.com/jquery/jquery/issues/1708
所述.offset()方法允许我们以检索一个元素的当前位置相对于文档。将此与.position()进行对比,后者会相对于偏移父级检索当前位置。将新元素放置在现有元素的顶部以进行全局操作(尤其是用于实现拖放操作)时,.offset()更有用。
这两个函数均返回具有两个属性的普通对象:宽度和高度。
offset()是指相对于文档的位置。
position()指相对于其父元素的位置
但是当对象的css位置为“绝对”时,两个函数都将返回width = 0和height = 0