Start · Sprachen · JavaScript · Referenz · CSSMathClamp.value

CSSMathClamp.value

Eigenschaft

Schreibgeschützte Eigenschaft, die den bevorzugten Wert (mittleres Argument) eines <code>clamp()</code>-Ausdrucks als <code>CSSNumericValue</code> liefert.

seit JavaScript Eingeschränkte Verfügbarkeit (Teil der CSS Typed O Kategorie: webapi

Signatur

CSSMathClamp.value

Beschreibung

Die Eigenschaft value eines CSSMathClamp-Objekts steht für das mittlere Argument der CSS-Funktion clamp(MIN, VAL, MAX), also den bevorzugten Wert. Er gilt, solange er zwischen der Untergrenze (lower) und der Obergrenze (upper) liegt. Zurückgegeben wird eine Instanz von CSSNumericValue, zum Beispiel ein CSSUnitValue wie 50vw oder ein zusammengesetzter Ausdruck wie CSSMathSum für calc(1rem + 2vw).

Die Eigenschaft ist nützlich, wenn du flüssige Größen – etwa responsive Schriftgrößen mit clamp() – per Skript auswerten, prüfen oder umbauen willst, ohne CSS-Strings selbst zu zerlegen. Mit dem zurückgegebenen Objekt kannst du zum Beispiel über .unit und .value (bei CSSUnitValue) die Einheit und die Zahl auslesen oder mit .to() bzw. .add() weiterrechnen.

Die Eigenschaft ist schreibgeschützt. Willst du einen anderen bevorzugten Wert, erzeugst du ein neues Objekt mit new CSSMathClamp(lower, value, upper) und weist es über attributeStyleMap.set() zu.

Rückgabewert

Typ
CSSNumericValue
Beschreibung
Der bevorzugte Wert des clamp()-Ausdrucks, z. B. ein CSSUnitValue oder ein CSSMathValue wie CSSMathSum.

Beispiele

CSSMathClamp erzeugen und bevorzugten Wert auslesen

const clamp = new CSSMathClamp(CSS.px(100), CSS.vw(50), CSS.px(800));

console.log(clamp.value.toString());
console.log(clamp.value.value, clamp.value.unit);
console.log(clamp.toString());
50vw 50 "vw" clamp(100px, 50vw, 800px)

Zusammengesetzter bevorzugter Wert

// Bevorzugter Wert: calc(1rem + 2vw)
const preferred = CSS.rem(1).add(CSS.vw(2));
const fontSize = new CSSMathClamp(CSS.rem(1), preferred, CSS.rem(3));

console.log(fontSize.value instanceof CSSMathSum);
console.log(fontSize.value.toString());
true calc(1rem + 2vw)

Bevorzugten Wert ändern (neues Objekt statt Zuweisung)

const heading = document.querySelector('h1');
const current = new CSSMathClamp(CSS.rem(1.5), CSS.vw(4), CSS.rem(3));

// current.value = CSS.vw(5); // hätte keine Wirkung, weil value schreibgeschützt ist
const updated = new CSSMathClamp(current.lower, CSS.vw(5), current.upper);
heading.attributeStyleMap.set('font-size', updated);

console.log(heading.attributeStyleMap.get('font-size').toString());
clamp(1.5rem, 5vw, 3rem)

Wert aus dem Stil lesen mit Feature-Prüfung

const box = document.querySelector('.box');
box.style.width = 'clamp(200px, 60%, 900px)';

const width = box.attributeStyleMap.get('width');
if ('CSSMathClamp' in window && width instanceof CSSMathClamp) {
  console.log('Bevorzugt:', width.value.toString());
} else {
  console.log('Kein CSSMathClamp verfügbar:', String(width));
}
Bevorzugt: 60%

// Wichtig · Fallstricke

  • Schreibgeschützt: Eine Zuweisung an value wird im nicht-strikten Modus einfach ignoriert und löst im Strict Mode einen TypeError aus. Für Änderungen erzeugst du ein neues CSSMathClamp.
  • Rückgabetyp prüfen: value ist nicht immer ein CSSUnitValue. Bei calc()-Ausdrücken bekommst du Unterklassen von CSSMathValue, die keine Eigenschaften .value/.unit haben. Prüfe den Typ deshalb vorher mit instanceof.
  • Kein berechneter Endwert: value liefert das Argument so, wie es angegeben wurde, und nicht den tatsächlich angewandten, begrenzten Wert. Den bekommst du über getComputedStyle() bzw. computedStyleMap() – je nach Eigenschaft und Browser.
  • Einheiten müssen zusammenpassen: Der Konstruktor wirft einen TypeError, wenn sich die Typen von lower, value und upper nicht kombinieren lassen (z. B. px und deg gemischt).
  • Browser-Kompatibilität: CSSMathClamp gehört zum CSS Typed OM und wird nur eingeschränkt unterstützt (vor allem Chromium-basierte Browser; Firefox unterstützt das Typed OM bisher nicht). Manche Browser geben clamp()-Werte auch als CSSUnparsedValue oder CSSStyleValue zurück. Nutze deshalb eine Feature-Prüfung ('CSSMathClamp' in window).