JQuery: position ()和 offest ()之间的区别

position()offset()的区别是什么? 我尝试在一个点击事件中做以下事情:

console.info($(this).position(), $(this).offset());

它们似乎返回完全相同的... (单击的元素位于表中的表单元格中)

100739 次浏览

。偏移()方法允许我们检索元素 相对于文件的当前位置。对比 。位置(),它检索 相对于偏移父级的当前位置。当将新元素放置在现有元素之上以进行全局操作(特别是实现拖放)时,。偏移量()更有用。

资料来源: http://api.jquery.com/offset/

它们是否相同取决于上下文。

  • 返回一个 {left: x, top: y}对象 相对于偏移量父级

  • 返回一个 {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}

这两个函数都返回一个具有两个属性的普通对象: width 和 height。

偏移量()是指相对于文档的位置。

Position ()指相对于其父元素的位置

但是当对象的 css 位置为“绝对”时,两个函数都将返回 width = 0 & height = 0