So verwenden Sie JS, um zu überprüfen, ob sich ein Element im Ansichtsfenster befindet

So verwenden Sie JS, um zu überprüfen, ob sich ein Element im Ansichtsfenster befindet

Vorwort

Teilen Sie zwei Methoden, um zu überwachen, ob sich ein Element im Ansichtsfenster befindet

1. Positionsberechnung

Verwenden Sie die Methode Element.getBoundingClientRect(), um die Position des Elements relativ zum Ansichtsfenster zurückzugeben

const isElementVisible = (el) => {
 const rect = el.getBoundingClientRect();
};

Ermitteln Sie die Breite und Höhe des Browserfensters

const isElementVisible = (el) => {
 const rect = el.getBoundingClientRect();
  const vWidth = window.innerWidth || document.documentElement.clientWidth;
  const vHeight = window.innerHeight || document.documentElement.clientHeight;
};

Bestimmen Sie, ob sich das Element im Ansichtsfenster befindet, wie in der Abbildung gezeigt

const isElementVisible = (el) => {
  const rect = el.getBoundingClientRect()
  const vWidth = window.innerWidth || document.documentElement.clientWidth
  const vHeight = window.innerHeight || document.documentElement.clientHeight

  
  Wenn (
    rechteck.rechts < 0 ||
    Rechteck unten < 0 ||
    Rechteck.links > vBreite ||
    rechteck.oben > vHöhe
  ) {
    return false
  }

  returniere wahr
}

Die Methode getBoundingClientRect führt zu einem Neufluss und Neuzeichnen des Browsers, was etwas mehr Leistung verbraucht, aber eine bessere Kompatibilität als Intersection Observer bietet.

2. Kreuzungsbeobachter

Die Intersection Observer API bietet eine Möglichkeit, Änderungen an der Schnittmenge eines Zielelements mit einem Vorgängerelement oder mit dem Ansichtsfenster eines Dokuments der obersten Ebene asynchron zu beobachten.

Die Intersection Observer API bietet eine Möglichkeit, Änderungen an der Schnittmenge eines Zielelements mit einem Vorgängerelement oder dem Ansichtsfenster asynchron zu erkennen. Die konfigurierte Rückruffunktion wird ausgelöst, wenn das Zielelement den Ansichtsbereich oder andere angegebene Elemente schneidet.

// Die zu überwachenden Elemente abrufen const boxes = document.querySelectorAll('.box')

// Erstelle einen Beobachter und konfiguriere die Callback-Funktion // Verwende die Eigenschaft isIntersecting, um zu ermitteln, ob das Element den Ansichtsbereich überschneidet const observer = new IntersectionObserver((entries, observer) => {
 Einträge.fürJeden((Eintrag) => {
    konsole.log(
      Eintrag.Ziel,
      entry.isIntersecting ? "sichtbar" : "unsichtbar"
    );
  });
})

Boxen.fürJedes((Box) => {
  Beobachter.beobachten(Box);
});

siehe

So überprüfen Sie, ob sich ein Element im Ansichtsfenster befindet 4bcl

API für Kreuzungsbeobachter

Zusammenfassen

Damit ist dieser Artikel darüber, wie Sie mit JS prüfen können, ob sich ein Element im Ansichtsfenster befindet, abgeschlossen. Weitere Informationen dazu, wie Sie mit JS prüfen können, ob sich ein Element im Ansichtsfenster befindet, finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen!

<<:  Tutorial zur Verwendung von Prepare-, Execute- und Deallocate-Anweisungen in MySQL

>>:  Detaillierte Erläuterung der Routing-Konfiguration im Linux-System mit mehreren Netzwerkkarten

Artikel empfehlen

Vue realisiert Click-Flip-Effekt

Verwenden Sie Vue, um einfach einen Click-Flip-Ef...

Detaillierte Erklärung der Nginx-Konfigurationsdatei

Die Hauptkonfigurationsdatei von Nginx ist nginx....

W3C Tutorial (11): W3C DOM Aktivitäten

Das Document Object Model (DOM) ist eine Plattfor...

Tutorial zur Installation von htop unter CentOS 8

Wenn Sie Ihr System interaktiv überwachen möchten...

Vue-Elternkomponente ruft Funktionsimplementierung der Unterkomponente auf

Die übergeordnete Vue-Komponente ruft die Funktio...

JS implementiert Click-Drop-Effekt

js realisiert den Spezialeffekt des Klickens und ...

MySQL-Lerndatenbankbetrieb DML ausführliche Erklärung für Anfänger

Inhaltsverzeichnis 1. Anweisung einfügen 1.1 Einf...

Methode zur Behebung von IE6-Space-Bugs

Schauen Sie sich den Code an: Code kopieren Der Co...

So installieren Sie MySQL 5.7 aus dem Quellcode in einer CentOS 7-Umgebung

Dieser Artikel beschreibt, wie MySQL 5.7 aus dem ...

Navicat kann keine Funktionslösungsfreigabe erstellen

Als ich zum ersten Mal eine MySQL-FUNKTION schrie...

So konfigurieren Sie Nginx zur Unterstützung von IPv6 unter Linux

1. Überprüfen Sie, ob das vorhandene Nginx IPv6 u...

Spezifische Verwendung von MySQL-Fensterfunktionen

Inhaltsverzeichnis 1. Was ist eine Fensterfunktio...

Einführung mehrerer benutzerdefinierter Schriftarten in CSS3

Heute habe ich ein Problem in HTML gefunden. Es s...