Signatur
Beschreibung
Die schreibgeschützte Eigenschaft length des Interfaces CSSTransformValue liefert die Anzahl der enthaltenen CSSTransformComponent-Objekte. Jede einzelne Transformationsfunktion eines transform-Werts, also etwa translate(), rotate(), scale() oder matrix(), zählt als ein Element.
Ein CSSTransformValue ist ein listenartiges Objekt. Mit length und dem Indexzugriff (value[0], value[1] …) lässt es sich wie ein Array durchlaufen. Zusätzlich ist es iterierbar und bietet forEach(), entries(), keys() und values(). Mit length prüfen Sie z. B., ob ein Element überhaupt transformiert ist, oder Sie greifen gezielt auf die letzte Transformation zu.
Einen CSSTransformValue erhalten Sie typischerweise über element.computedStyleMap().get('transform') bzw. element.attributeStyleMap.get('transform') oder direkt mit dem Konstruktor new CSSTransformValue([...]).
Rückgabewert
CSSTransformComponent-Einträge in der Liste.Beispiele
Anzahl der Komponenten eines selbst erzeugten Transform-Werts
const transform = new CSSTransformValue([
new CSSTranslate(CSS.px(10), CSS.px(20)),
new CSSRotate(CSS.deg(45)),
new CSSScale(1.5, 1.5)
]);
console.log(transform.length);
console.log(transform.toString());
Inline-Transform eines Elements auslesen und durchlaufen
const box = document.querySelector('.box');
box.style.transform = 'translateX(50px) rotate(10deg)';
const value = box.attributeStyleMap.get('transform');
if (value instanceof CSSTransformValue) {
for (let i = 0; i < value.length; i++) {
console.log(i, value[i].constructor.name, value[i].toString());
}
}
Letzte Transformation gezielt anpassen
const el = document.querySelector('#card');
el.attributeStyleMap.set('transform',
new CSSTransformValue([
new CSSTranslate(CSS.px(0), CSS.px(0)),
new CSSRotate(CSS.deg(0))
])
);
const t = el.attributeStyleMap.get('transform');
const last = t[t.length - 1];
if (last instanceof CSSRotate) {
last.angle = CSS.deg(90);
el.attributeStyleMap.set('transform', t);
}
console.log(el.style.transform);
// Wichtig · Fallstricke
- Schreibgeschützt: Eine Zuweisung an
lengthhat keine Wirkung (im Strict Mode wird einTypeErrorgeworfen). Anders als bei Arrays lässt sich die Liste so nicht kürzen. Erzeugen Sie stattdessen einen neuenCSSTransformValue. - Kein leerer Wert: Der Konstruktor verlangt mindestens eine Komponente, sonst wirft er einen
TypeError.lengthist daher immer ≥ 1. Beitransform: noneliefertget('transform')einenCSSKeywordValuestatt einesCSSTransformValue. Prüfen Sie deshalb vorher mitinstanceof. - Berechnete Werte: Wie
computedStyleMap()Transformationen zurückgibt, ist nicht einheitlich. Je nach Browser erhalten Sie die ursprünglichen Einzelfunktionen oder eine zusammengefasste Matrix, undlengthkann entsprechend abweichen. - Kompatibilität: CSS Typed OM wird von Chromium-Browsern (seit Version 66) und Safari (seit 16.4) unterstützt, von Firefox bisher nicht. Nutzen Sie eine Feature-Erkennung, etwa
'CSSTransformValue' in window.