2013-03-29 2 views
5

Gibt es eine Möglichkeit zu wissen, ob ein Element auf einer HTML-Seite sichtbar ist?Testen, ob das Element vom Benutzer auf einer HTML-Seite gesehen werden kann

So:

enter image description here

Man kann wohl noch bedenkt, dass es die horizontalen/vertikalen Bildlauf-Positionen, die Breite/Höhe des Browserfensters und die Position/Größe des Elements auf der Seite, aber Ich habe wenig Erfahrung in jQuery, also weiß ich nicht, wie es geht. Und es könnte eine einfache Funktion geben, die man anrufen kann, ich weiß es nicht.

+0

möglich Duplikat [Wie kann man überprüfen, ob ein Element in der Ansicht des Benutzers mit jquery ist] (http://stackoverflow.com/questions/8229291/how-to-check-if-an-element -ist-in-the-view-des-Benutzers-mit-jquery) – BenM

+2

http://stackoverflow.com/questions/8229291/how-to-check-if-an-element-is-in-the- Ansicht-des-Benutzers-mit-jQuery. Gut gestellte Frage. – nickhar

Antwort

5

Sie können die .is(':visible') Selektoren verwenden, um zu überprüfen, ob ein Element derzeit im DOM sichtbar ist.

Edit:

jedoch als @BenM erwähnt, diese prüft nicht, ob die Elemente auf Ihrer Seite tatsächlich aus Ihrem scrollbaren Bereich sind - ein großes kleines Plugin, das Sie in diesem Fall benutzen könnten, wäre Viewport Selectors for jQuery.

+0

Nein, das geht nicht. Das definiert, ob es im DOM physisch angezeigt wird und nicht, wenn es für den Benutzer auf seinem Bildschirm sichtbar ist. Ein Element könnte sichtbar sein, aber außerhalb des Bildlaufbereichs. – BenM

+0

Sie sind völlig richtig, Entschuldigung, ich werde jetzt bearbeiten. – lifetimes

0

Hier ist ein Code, den ich verwende, um dies zu tun. Es wurde getestet, um großartig zu funktionieren.

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. 
    } 
} 
Verwandte Themen