Signatur
Beschreibung
Die Eigenschaft height gibt die Höhe des Rechtecks als Gleitkommazahl in CSS-Pixeln zurück. Sie ist schreibgeschützt: Zuweisungen werden im nicht-strikten Modus stillschweigend ignoriert. Im Strict Mode lösen sie einen TypeError aus, weil nur ein Getter existiert. Wenn du die Höhe ändern willst, nimm die veränderbare Unterklasse DOMRect.
In der Praxis kommt dir height meist über Objekte unter, die der Browser liefert, zum Beispiel über Element.getBoundingClientRect(), ResizeObserverEntry.contentRect oder IntersectionObserverEntry.boundingClientRect. Damit misst du, wie hoch ein Element tatsächlich gerendert wird, etwa für Layout-Berechnungen, Animationen, virtuelles Scrollen oder die Positionierung von Tooltips.
Anders als top und bottom wird height nicht normalisiert. Das Rechteck wird über Ursprung (x/y) und Ausdehnung (width/height) definiert. Eine negative Höhe bedeutet, dass sich das Rechteck vom Ursprung aus nach oben erstreckt. getBoundingClientRect() liefert allerdings nie negative Werte.
Rückgabewert
Beispiele
Rechteck erzeugen und Höhe auslesen
const rect = new DOMRectReadOnly(10, 20, 300, 150);
console.log(rect.height);
// Negative Höhe: Das Rechteck erstreckt sich nach oben
const umgedreht = new DOMRectReadOnly(0, 100, 50, -40);
console.log(umgedreht.height, umgedreht.top, umgedreht.bottom);
Gerenderte Höhe eines Elements messen
const box = document.querySelector('.card');
const { height } = box.getBoundingClientRect();
// Nachkommastellen sind möglich, z. B. 123.5
console.log(`Karte ist ${Math.round(height)}px hoch`);
Höhenänderungen mit ResizeObserver verfolgen
const panel = document.querySelector('#panel');
const observer = new ResizeObserver((entries) => {
for (const entry of entries) {
const h = entry.contentRect.height; // DOMRectReadOnly
panel.classList.toggle('kompakt', h < 200);
console.log('Neue Inhaltshöhe:', h);
}
});
observer.observe(panel);
Schreibschutz im Strict Mode
'use strict';
const rect = new DOMRectReadOnly(0, 0, 100, 50);
try {
rect.height = 999;
} catch (err) {
console.log(err instanceof TypeError); // true
}
// Veränderbare Alternative
const editierbar = DOMRect.fromRect(rect);
editierbar.height = 999;
console.log(rect.height, editierbar.height);
// Wichtig · Fallstricke
- Negative Werte: Wenn du Rechtecke selbst erzeugst, kann
heightnegativ sein. Für eine sichere Ausdehnung verwendeMath.abs(rect.height)oderrect.bottom - rect.top. - Transformationen:
getBoundingClientRect().heightberücksichtigt CSS-Transformationen wiescale()oderrotate()und liefert die Höhe der umschließenden Box.offsetHeightignoriert Transformationen und ist immer ganzzahlig gerundet. - Box-Modell: Bei
getBoundingClientRect()gehören Padding und Rahmen zur Höhe.ResizeObserverEntry.contentRectenthält dagegen nur die Inhaltsbox. - Performance: Wer
getBoundingClientRect()ausliest, erzwingt ein synchrones Layout (Reflow). Messungen gehören nicht in Schleifen, in denen gleichzeitig Stile geschrieben werden. Um Layout-Thrashing zu vermeiden, erst alle Werte lesen und dann schreiben, oderResizeObservernutzen. - Kompatibilität: In allen modernen Browsern verfügbar. Der Konstruktor
new DOMRectReadOnly()fehlt in sehr alten Browsern wie dem Internet Explorer. Dort liefertgetBoundingClientRect()einClientRectohnex/y;heightist vorhanden. - Ausgeblendete Elemente (
display: none) haben die Höhe0.