Signatur
Beschreibung
Die Eigenschaft height des Interfaces SVGImageElement liefert ein SVGAnimatedLength-Objekt, das die Höhe des Anzeigebereichs eines <image>-Elements in einer SVG-Grafik beschreibt. Sie gehört zusammen mit x, y und width zu den Geometrie-Eigenschaften des Elements.
Die Eigenschaft selbst ist schreibgeschützt; die eigentliche Länge liest und ändert man über height.baseVal (ein SVGLength-Objekt). Mit baseVal.value erhält man den Wert in Benutzereinheiten (User Units), mit baseVal.valueAsString den Originaltext samt Einheit, etwa "50%". height.animVal gibt den aktuell animierten Wert zurück, z. B. während einer SMIL-Animation mit <animate>.
Typische Einsatzfälle sind das dynamische Skalieren eingebetteter Rastergrafiken, das Berechnen von Seitenverhältnissen oder das Auslesen von Layout-Werten in interaktiven Diagrammen. In SVG 2 ist height auch eine Geometrie-Eigenschaft, die per CSS gesetzt werden kann; der Standardwert auto entspricht dann der natürlichen Bildhöhe.
Rückgabewert
baseVal (statischer Wert als SVGLength) und animVal (aktueller, ggf. animierter Wert als SVGLength, schreibgeschützt).Beispiele
Höhe eines SVG-Bildes auslesen
const svgNS = 'http://www.w3.org/2000/svg';
const svg = document.createElementNS(svgNS, 'svg');
const img = document.createElementNS(svgNS, 'image');
img.setAttribute('href', 'logo.png');
img.setAttribute('width', '120');
img.setAttribute('height', '80');
svg.append(img);
document.body.append(svg);
console.log(img.height.baseVal.value);
console.log(img.height.baseVal.valueAsString);
Höhe unter Beibehaltung des Seitenverhältnisses ändern
const img = document.querySelector('svg image');
const scaleTo = (newHeight) => {
const w = img.width.baseVal.value;
const h = img.height.baseVal.value;
const ratio = w / h;
img.height.baseVal.value = newHeight;
img.width.baseVal.value = newHeight * ratio;
};
scaleTo(160);
console.log(img.getAttribute('height'), img.getAttribute('width'));
Prozentwert mit Einheit setzen
const img = document.querySelector('svg image');
const len = img.height.baseVal;
// Wert als Prozent der Viewport-Höhe setzen
len.newValueSpecifiedUnits(SVGLength.SVG_LENGTHTYPE_PERCENTAGE, 50);
console.log(len.valueAsString);
console.log(img.getAttribute('height'));
// Wichtig · Fallstricke
- Nicht direkt zuweisen:
img.height = 100bewirkt nichts (bzw. wirft im Strict Mode einenTypeError), weil die Eigenschaft schreibgeschützt ist. Ändern Sie stattdessenimg.height.baseVal.valueoder nutzen SiesetAttribute('height', …). - Relative Einheiten: Bei Prozentangaben oder
emhängtbaseVal.valuevom Viewport bzw. der Schriftgröße ab. Ist das Element noch nicht im Dokument, kann das Umrechnen fehlschlagen oder0ergeben. - CSS hat Vorrang: Wird
heightper CSS gesetzt (SVG 2), spiegeltbaseValweiterhin nur das Attribut wider. Die tatsächlich dargestellte Größe liefertgetBBox()odergetBoundingClientRect(). - Fehlendes Attribut: Fehlt
height, liefertbaseVal.valuemeist0, auch wenn der Browser das Bild in natürlicher Größe darstellt. - Die Eigenschaft wird von allen modernen Browsern unterstützt. Den Wert
autound die Größenangabe per CSS unterstützen ältere Browser nicht zuverlässig.