2011-01-11 2 views

답변

16

나는 당신이보기 밖으로 스크롤되었는지 여부를 참조한다고 가정.

그렇다면,이 시도 :

if($(window).scrollTop() + $(window).height() > $('#my_el').offset().top) { 
    // element is in view 
} 

예 :http://jsfiddle.net/8x4Zd/

(. 대상 요소가보기에있는 경우 다음 테스트 아래로 스크롤 반복하는 결과 패널을 클릭합니다.)

전체 요소가 표시되도록하려면을 추가하십시오. 210을 방정식에 입력합니다.

예 : 매우 멋진http://jsfiddle.net/8x4Zd/1/

var win = $(window); 
var el = $('#my_el'); 
var winPos = win.scrollTop() + win.height(); 
var elPos = el.offset().top + el.height(); 

if(winPos > elPos) { 
    // element is in view 
} 
+0

. 나는 그것을 시험해 보았다. 가장 큰 문제는 요소가 보이지 않을 때 ".addClass ('fixed');" 위치 고정, 하단 : 0. 위의 func은 요소가 뷰에 있다고 말합니다. 그래서 일어나는 일은 아이템이 눈에 띄거나 안 보이는 것입니다. 이견있는 사람? – AnApprentice

+0

새로운 페이스 북의 메시지는 포스트 주석 박스와 함께 이것을합니다. 봤니? – AnApprentice

+0

@AnApprentice : 나는 (나는 facebook 계정이 없다.)'addClass()'를 수행하는 코드를 트리거하는 이벤트는 무엇인가? 아마도 테스트에 '&&! el.hasClass ('fixed ')'를 추가 할 수 있습니다. – user113716

관련 문제