2010-07-08 6 views
160

position()offset()의 차이점은 무엇입니까? 내가 클릭 이벤트에서 다음을 수행하려고 :jQuery : position()과 offset() 사이의 차이

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

그리고 그들은 정확히 반환하는 것 같은 ...

답변

194

position 오프셋 부모에 위치 상대를 반환하고 offset 문서에 동일한 상대 않습니다. 분명히 문서가 오프셋 부모 인 경우가 종종 있는데, 이는 동일합니다. 당신은 그러나이 같은 레이아웃을 가지고있는 경우

:

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

는 그 다음 offset 하위 200있을 것입니다 : 200,하지만 position은 0입니다 : 0.

+2

따라서 오프셋 부모가 절대 위치로 설정된 첫 번째 부모입니까? 또는? – Svish

+1

@Svish : 와우, 정말 코드 들여 쓰기가 빠졌습니까? 편집을위한 thaks. 예, 오프셋 부모는 가장 가까운 * positions * 부모입니다. 즉, 위치가 절대, 상대 또는 고정으로 설정된 요소 (정적은 아님). 이것은 jQuery 나 자바 스크립트가 아니기 때문에 css에서 동일한 동작을합니다. 즉, 'sub' 절대 위치 지정을 0 : 0으로 지정하면 오프셋 부모의 왼쪽 위 모서리에 위치하게됩니다. –

+0

신난다, 그 다음 그것은 완전히 의미를 가진다! (편집에는 문제가 없습니다, hehe. 항상 그렇습니다 : p) – Svish

27

(클릭 된 요소는 테이블의 테이블 셀 내에) .offset() 메서드를 사용하면 문서와 관련된 요소 의 현재 위치를 검색 할 수 있습니다. 이를 오프셋 부모 인에 상대적인 현재 위치를 검색하는 .position()과 비교하십시오. 전역 조작 (특히 끌어서 놓기 구현)을 위해 기존 요소 위에 새로운 요소를 배치하면 .offset()이 더 유용합니다.

자료 :. http://api.jquery.com/offset/ 요소가있는 어떤 상황에 따라 달라

+3

상기 요청으로, 오프셋 부모로 간주되는 것은 무엇입니까? 다른 div의 첫 번째 div에서 position()을 호출해도 다른 스타일이나 위치 지정이 수행되지 않는 경우에도 항상 0,0을 반환하지 않는 것으로 보입니다. – Kokodoko

+2

jquery.offsetParent() : http://api.jquery.com/offsetparent/ "위치에 가장 가까운 조상 요소를 가져옵니다." –

-7

두 함수 모두 width가 & 높이 인 일반 개체를 반환합니다.

offset()은 문서에 상대적인 위치를 나타냅니다.

위치()는 그것의 부모 요소

에 상대적인 위치를 의미하지만, 오브젝트의 CSS 위치 될 때 "절대"두 함수 반환 & 0 = 폭 높이 = 0

+5

수정 : offset 및 position은 width 및 height가 아닌 left 및 top 속성을 가진 객체를 반환합니다. –

관련 문제