ResizeObserverEntry
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2020.
Das ResizeObserverEntry
-Interface repräsentiert das Objekt, das der Callback-Funktion des Konstruktors von ResizeObserver()
übergeben wird. Es ermöglicht Ihnen, auf die neuen Abmessungen des beobachteten Element
oder SVGElement
zuzugreifen.
Instanz-Eigenschaften
ResizeObserverEntry.borderBoxSize
Schreibgeschützt-
Ein Array von Objekten, das die neue Größe des Border-Box des beobachteten Elements enthält, wenn der Callback ausgeführt wird.
ResizeObserverEntry.contentBoxSize
Schreibgeschützt-
Ein Array von Objekten, das die neue Größe des Content-Box des beobachteten Elements enthält, wenn der Callback ausgeführt wird.
ResizeObserverEntry.devicePixelContentBoxSize
Schreibgeschützt-
Ein Array von Objekten, das die neue Größe des Content-Box in Geräte-Pixeln des beobachteten Elements enthält, wenn der Callback ausgeführt wird.
ResizeObserverEntry.contentRect
Schreibgeschützt-
Ein
DOMRectReadOnly
-Objekt, das die neue Größe des beobachteten Elements enthält, wenn der Callback ausgeführt wird. Beachten Sie, dass dies jetzt eine veraltete Eigenschaft ist, die aus Gründen der Rückwärtskompatibilität in der Spezifikation beibehalten wird. ResizeObserverEntry.target
Schreibgeschützt-
Eine Referenz auf das beobachtete
Element
oderSVGElement
.
Hinweis: Die Content-Box ist der Bereich, in dem Inhalte platziert werden können, also die Border-Box abzüglich des Paddings und der Breite des Rahmens. Die Border-Box umfasst den Inhalt, das Padding und den Rahmen. Siehe Das Box-Modell für eine weitere Erklärung.
Instanz-Methoden
Keine.
Beispiele
Der folgende Ausschnitt stammt aus dem resize-observer-text.html (siehe Quelle) Beispiel.
Beachten Sie, dass der Code drei verschiedene Kompatibilitätsfälle abdeckt:
- Einige alte Browser unterstützen möglicherweise
contentRect
, aber nichtcontentBoxSize
. - Alte Versionen von Firefox unterstützen
contentBoxSize
, haben es jedoch fälschlicherweise als einzelnes Objekt anstelle eines Arrays implementiert. - Moderne Browser unterstützen
contentBoxSize
als ein Array von Objekten, um die Meldung von Box-Größen für fragmentierte Elemente zu ermöglichen (zum Beispiel in einem Mehrspaltenszenario).
const resizeObserver = new ResizeObserver((entries) => {
for (let entry of entries) {
if (entry.contentBoxSize) {
// The standard makes contentBoxSize an array...
if (entry.contentBoxSize[0]) {
h1Elem.style.fontSize =
Math.max(1.5, entry.contentBoxSize[0].inlineSize / 200) + "rem";
pElem.style.fontSize =
Math.max(1, entry.contentBoxSize[0].inlineSize / 600) + "rem";
} else {
// ...but old versions of Firefox treat it as a single item
h1Elem.style.fontSize =
Math.max(1.5, entry.contentBoxSize.inlineSize / 200) + "rem";
pElem.style.fontSize =
Math.max(1, entry.contentBoxSize.inlineSize / 600) + "rem";
}
} else {
h1Elem.style.fontSize =
Math.max(1.5, entry.contentRect.width / 200) + "rem";
pElem.style.fontSize = Math.max(1, entry.contentRect.width / 600) + "rem";
}
}
console.log("Size changed");
});
resizeObserver.observe(divElem);
Spezifikationen
Specification |
---|
Resize Observer # resize-observer-entry-interface |
Browser-Kompatibilität
BCD tables only load in the browser