2011-10-15 4 views
65

javascript/jQuery를 사용하여 페이지 상단에서 DOM에 요소가있는 위치까지의 수직 거리를 찾는 방법은 무엇입니까?jQuery를 사용하여 요소의 px에서 상단까지의 수직 거리를 찾는 방법

나는 내가 li#test 요소에 페이지의 상단에서 수직 거리를 찾으려면 여기 예를 들어

<ul> 
    <li>one</li> 
    <li>one</li> 
    <li>one</li> 
    <li>one</li> 
    <li class="test">one</li> 
    .... 
    .... 
    .... 
    <li>one</li> 
</ul> 

뭔가를했습니다.

나는 .scrollTop()을 시도했지만 항상 0이됩니다!

+1

이것은 무엇을 찾고 계십니까? var position = $ ('li # test'). position(); 알림 (position.top); –

답변

143

사용 .offset()은 요소와 문서의 상단 사이의 거리를 얻을 수 있습니다 :

$("li.test").offset().top 
89

롭 W의 대답은 정확 - 당신에게주는 전체 페이지의 상단에서 오프셋 것이다. 당신이 볼 수있는 화면의 상단에서 오프셋 얻고 싶은 경우에

, 당신은이 작업을 수행해야하는 데 도움이

var viewableOffset = $("#li.test").offset().top - $(window).scrollTop(); 

희망을!

+1

SO에 오신 것을 환영합니다 :) –

+2

하하 감사합니다. 그래서 항상 Google 검색에서 유용한 히트 였고, 나는 지루했고, 몇 가지 질문에 답할 것입니다. 나는 자매 사이트 인 ServerFault에 대한 답변을 기다리는 동안 여기를 돌아 다닙니다. 저는 오랫동안 프로그래머 였고 초보 관리자입니다. :) – thexfactor

+1

위치를 제어하는 ​​경우 코드가 우수합니다 : 고정 요소! – Starkers

3

내가 아는 한 .offset()은 현재 스크롤 위치와 문서 상단 사이의 거리를 가져옵니다. 더 정확하게하기 위해 그것에 페이지에 기존의 고정 요소의 높이를 $("li.test").position().top

+0

은 offsetParent를 기준으로합니다 (부모 div가 아닐 수 있음). – aaron

0

사용 $ (요소) .offset() 상단과 추가합니다.

당신은이를 사용할 필요가있다.

관련 문제