IntersectionObserver: observe() Methode

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since March 2019.

Die observe() Methode des IntersectionObserver Interfaces fügt ein Element zur Menge der vom IntersectionObserver überwachten Zielelemente hinzu. Ein Observer hat einen Schwellenwertsatz und eine Wurzel, kann aber mehrere Zielelemente in Bezug auf Sichtbarkeitsänderungen überwachen.

Um die Beobachtung des Elements zu stoppen, rufen Sie IntersectionObserver.unobserve() auf.

Wenn die Sichtbarkeit des angegebenen Elements eine der Sichtbarkeitsschwellen des Observers (wie in IntersectionObserver.thresholds aufgelistet) überschreitet, wird der Callback des Observers mit einem Array von IntersectionObserverEntry Objekten ausgeführt, die die aufgetretenen Schnittänderungen darstellen. Es ist zu beachten, dass dieses Design es ermöglicht, die Schnittänderungen mehrerer Elemente durch einen einzigen Aufruf des Callbacks zu verarbeiten.

Hinweis: Der Callback des Observers wird immer im ersten Render-Zyklus nach dem Aufruf von observe() ausgelöst, selbst wenn sich das beobachtete Element in Bezug auf das Ansichtsfenster noch nicht bewegt hat. Das bedeutet, dass zum Beispiel ein Element, das sich außerhalb des Ansichtsfensters befindet, wenn observe() darauf angewendet wird, sofort den Callback mit mindestens einem Eintrag aufruft, bei dem intersecting auf false gesetzt ist. Ein Element innerhalb des Ansichtsfensters führt dazu, dass der Callback sofort mit mindestens einem Eintrag aufgerufen wird, bei dem intersecting auf true gesetzt ist.

Syntax

js
observe(targetElement)

Parameter

targetElement

Ein element, dessen Sichtbarkeit innerhalb der Wurzel überwacht werden soll. Dieses Element muss ein Nachkomme des Wurzelelements sein (oder innerhalb des aktuellen Dokuments enthalten sein, wenn die Wurzel das Ansichtsfenster des Dokuments ist).

Rückgabewert

Keiner (undefined).

Beispiele

js
// Register IntersectionObserver
const io = new IntersectionObserver((entries) => {
  entries.forEach((entry) => {
    if (entry.intersectionRatio > 0) {
      // Add 'active' class if observation target is inside viewport
      entry.target.classList.add("active");
    } else {
      // Remove 'active' class otherwise
      entry.target.classList.remove("active");
    }
  });
});

// Declares what to observe, and observes its properties.
const boxElList = document.querySelectorAll(".box");
boxElList.forEach((el) => {
  io.observe(el);
});

Spezifikationen

Specification
Intersection Observer
# dom-intersectionobserver-observe

Browser-Kompatibilität

Siehe auch