jQuery: Difference between position() and offset()

风流意气都作罢 提交于 2019-11-26 01:57:47

问题


What is the difference between position() and offset()? I tried to do the following in a click event:

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

And they seem to return exactly the same... (The clicked element is within a table cell in a table)


回答1:


Whether they're the same depends on context.

  • position returns a {left: x, top: y} object relative to the offset parent

  • offset returns a {left: x, top: y} object relative to the document.

Obviously, if the document is the offset parent, which is often the case, these will be identical. The offset parent is "the closest positioned containing element."

For example, with this document:

 <div style="position: absolute; top: 200; left: 200;">
     <div id="sub"></div>
 </div>

Then the $('#sub').offset() will be {left: 200, top: 200}, but its .position() will be {left: 0, top: 0}.




回答2:


The .offset() method allows us to retrieve the current position of an element relative to the document. Contrast this with .position(), which retrieves the current position relative to the offset parent. When positioning a new element on top of an existing one for global manipulation (in particular, for implementing drag-and-drop), .offset() is the more useful.

Source: http://api.jquery.com/offset/




回答3:


Both functions return a plain object with two properties: width & height.

offset() refers to the position relative to the document.

position() refers to the position relative to its parent element

BUT when the object's css position is "absolute" both functions will return width=0 & height=0



来源:https://stackoverflow.com/questions/3202008/jquery-difference-between-position-and-offset

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!