2013-03-29 12 views
5

Czy istnieje sposób sprawdzenia, czy element jest widoczny na stronie HTML?Sprawdź, czy element jest widoczny dla użytkownika na stronie html.

Jak to:

enter image description here

można prawdopodobnie zrobić to biorąc pod uwagę poziomy/pionowy stanowiska przewijania, szerokość/wysokość okna przeglądarki i pozycja/rozmiar elementu na stronie, ale Mam małe doświadczenie w jQuery, więc nie wiem jak to zrobić. I może istnieć prosta funkcja, którą można nazwać, nie wiem.

+0

możliwe duplikat [Jak sprawdzić, czy element jest z punktu widzenia użytkownika z jQuery] (http://stackoverflow.com/questions/8229291/how-to-check-if-an-element -is-in-the-view-of-the-user-with-jquery) – BenM

+2

http://stackoverflow.com/questions/8229291/how-to-check-if-an-element-is-in-the- view-of-the-user-with-jquery. Ładnie postawione pytanie. – nickhar

Odpowiedz

5

Możesz użyć selektorów .is(':visible'), aby sprawdzić, czy element jest obecnie widoczny w DOM.

Edit:

Jednakże, jak @BenM wspomniano, to nie sprawdzić, czy elementy na stronie są rzeczywiście ze swojego przewijalnej zakresie - wielki mały plugin można użyć w tym przypadku byłoby Viewport Selectors for jQuery.

+0

Nie, nie możesz. Określa, czy jest fizycznie wyświetlany w DOM, a nie, czy jest widoczny dla użytkownika na ekranie. Element może być widoczny, ale poza zakresem przewijania. – BenM

+0

Masz całkowitą rację, przepraszam, będę edytować teraz. – lifetimes

0

Oto kod, którego używam w tym celu. Został przetestowany, aby działał świetnie.

function isVisible($obj) { 
    var top = $(window).scrollTop(); 
    var bottom = top + $(window).height(); 
    var objTop = $obj.offset().top; 
    var objBottom = objTop + $obj.height(); 

    if(objTop < bottom && objBottom > top) { 
     //some part of $obj is visible on the screen. 
     //does not consider left/right, only vertical. 
    } 
} 
Powiązane problemy