position()和 offset()的区别是什么? 我尝试在一个点击事件中做以下事情:
position()
offset()
console.info($(this).position(), $(this).offset());
它们似乎返回完全相同的... (单击的元素位于表中的表单元格中)
。偏移()方法允许我们检索元素 相对于文件的当前位置。对比 。位置(),它检索 相对于偏移父级的当前位置。当将新元素放置在现有元素之上以进行全局操作(特别是实现拖放)时,。偏移量()更有用。
资料来源: http://api.jquery.com/offset/
它们是否相同取决于上下文。
返回一个 {left: x, top: y}对象 相对于偏移量父级
{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}。
$('#sub').offset()
{left: 200, top: 200}
.position()
{left: 0, top: 0}
这两个函数都返回一个具有两个属性的普通对象: width 和 height。
偏移量()是指相对于文档的位置。 Position ()指相对于其父元素的位置
偏移量()是指相对于文档的位置。
Position ()指相对于其父元素的位置
但是当对象的 css 位置为“绝对”时,两个函数都将返回 width = 0 & height = 0