Start · Sprachen · JavaScript · Referenz · CSSValue

CSSValue

Schnittstelle

Veraltetes Interface aus DOM Level 2 Style, das den berechneten Wert einer CSS-Eigenschaft als Objekt mit <code>cssText</code> und <code>cssValueType</code> darstellt.

seit JavaScript DOM Level 2 Style (veraltet, aus allen aktuellen B deprecated seit ja Kategorie: webapi

Signatur

interface CSSValue

Beschreibung

CSSValue gehört zum alten DOM Level 2 Style-Objektmodell. Es beschreibt den Wert einer CSS-Eigenschaft als Objekt statt als bloßen String. Ein CSSValue bekam man früher über CSSStyleDeclaration.getPropertyCSSValue(name), meist auf dem Ergebnis von getComputedStyle().

Das Interface hat zwei Eigenschaften:

  • cssText (string): der Wert als CSS-Text, z. B. "16px".
  • cssValueType (number, nur lesbar): die Art des Werts als eine dieser Konstanten: CSSValue.CSS_INHERIT (0), CSSValue.CSS_PRIMITIVE_VALUE (1), CSSValue.CSS_VALUE_LIST (2) oder CSSValue.CSS_CUSTOM (3).

Es gibt zwei spezialisierte Unter-Interfaces: CSSPrimitiveValue für einzelne Werte mit Einheit, Farbe oder URL und CSSValueList für Wertlisten wie bei font-family oder transform.

Heute sollten Sie CSSValue nicht mehr verwenden. Für neuen Code gibt es zwei Wege: getComputedStyle(el).getPropertyValue(), wenn ein String reicht, oder das CSS Typed Object Model (element.computedStyleMap(), CSSStyleValue, CSSUnitValue), wenn Sie typisierte Werte brauchen. Die Beispiele unten zeigen die alte Nutzung (nur mit Feature-Erkennung) und die modernen Ersatzlösungen.

Rückgabewert

Typ
CSSValue
Beschreibung
Eine Instanz entstand nur als Rückgabewert von CSSStyleDeclaration.getPropertyCSSValue(). Einen öffentlichen Konstruktor gab es nie. In aktuellen Browsern existiert keins von beiden mehr.

Beispiele

Alte API mit Feature-Erkennung und Fallback

const el = document.body;
const style = getComputedStyle(el);

if (typeof style.getPropertyCSSValue === 'function') {
  // Historische DOM-Level-2-API
  const value = style.getPropertyCSSValue('font-size');
  console.log(value.cssText, value.cssValueType);
} else {
  // Moderner Fallback: String-Wert
  console.log('Nicht unterstützt, Fallback:', style.getPropertyValue('font-size'));
}
Nicht unterstützt, Fallback: 16px

cssValueType auswerten (historisch)

// Wertet ein CSSValue-ähnliches Objekt nach der alten Spezifikation aus
const TYPES = { 0: 'CSS_INHERIT', 1: 'CSS_PRIMITIVE_VALUE', 2: 'CSS_VALUE_LIST', 3: 'CSS_CUSTOM' };

const describe = (cssValue) =>
  `${cssValue.cssText} → ${TYPES[cssValue.cssValueType] ?? 'unbekannt'}`;

// Nachgebildetes Objekt, da Browser das Interface nicht mehr liefern
const fake = { cssText: 'Arial, sans-serif', cssValueType: 2 };
console.log(describe(fake));
Arial, sans-serif → CSS_VALUE_LIST

Moderner Ersatz: CSS Typed OM

const box = document.createElement('div');
box.style.width = '250px';
document.body.append(box);

if ('computedStyleMap' in Element.prototype) {
  const width = box.computedStyleMap().get('width'); // CSSUnitValue
  console.log(width.value, width.unit);   // Zahl und Einheit getrennt
  console.log(width.to('px').value * 2);  // direkt rechnen
} else {
  console.log(parseFloat(getComputedStyle(box).width));
}
250 "px" 500

Wertlisten ohne CSSValueList lesen

document.body.style.fontFamily = '"Helvetica Neue", Arial, sans-serif';

const families = getComputedStyle(document.body)
  .getPropertyValue('font-family')
  .split(',')
  .map((f) => f.trim().replace(/^["']|["']$/g, ''));

console.log(families);
["Helvetica Neue", "Arial", "sans-serif"]

// Wichtig · Fallstricke

Veraltet und entfernt: CSSValue, CSSPrimitiveValue, CSSValueList und getPropertyCSSValue() stehen in keinem aktuellen Standard mehr. Firefox hat sie mit Version 62 entfernt. Chromium und Safari haben sie schon früher entfernt bzw. nie vollständig unterstützt. Code, der sich darauf verlässt, führt zu einem TypeError („getPropertyCSSValue is not a function“).

  • Prüfen Sie vor jedem Zugriff mit Feature-Erkennung, ob die Funktion existiert, und sehen Sie immer einen Fallback auf getPropertyValue() vor.
  • Das CSS Typed OM (computedStyleMap()) ist der moderne Nachfolger. Chromium und Safari (ab 16.4) unterstützen es, Firefox bisher nur eingeschränkt oder gar nicht. Prüfen Sie es deshalb ebenfalls vor der Nutzung.
  • Berechnete Werte kommen immer aufgelöst zurück: em und % meist als px, Farben meist als rgb(). Vergleichen Sie also nicht mit den Werten aus dem Stylesheet.
  • getComputedStyle() kann einen Reflow auslösen. Vermeiden Sie häufige Aufrufe in Schleifen oder Animationen.