Signatur
Beschreibung
Der Konstruktor CSSSkewY() gehört zum CSS Typed Object Model (Houdini). Er erzeugt ein Objekt, das eine vertikale Scherung um den Winkel ay darstellt. Das entspricht der CSS-Funktion skewY(<angle>). Mit dem Objekt kannst du Transformationen typsicher per Code aufbauen und musst dafür keine Strings zusammensetzen und parsen.
Einzeln setzt man ein CSSSkewY-Objekt meist nicht. Üblicherweise kommt es als Bestandteil in einen CSSTransformValue, und dieser wird dann über element.attributeStyleMap.set('transform', …) an ein Element übergeben. So lassen sich mehrere Transformationen kombinieren, etwa CSSTranslate, CSSRotate und CSSSkewY.
Der Winkel muss ein CSSNumericValue vom Typ Winkel sein, also z. B. CSS.deg(10), CSS.rad(0.5) oder CSS.turn(0.1). Das Objekt hat die Eigenschaft ay (lesen und schreiben) und die geerbte Eigenschaft is2D, die bei Scherungen immer true ist. Außerdem stehen die Methoden toMatrix() und toString() zur Verfügung.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $ay Pflicht | CSSNumericValue | Scherwinkel entlang der y-Achse. Muss ein Winkel sein, z. B. CSS.deg(20) oder new CSSUnitValue(0.3, 'rad'). Positive Werte scheren nach unten. |
Rückgabewert
CSSSkewY-Objekt, das skewY(ay) darstellt.Beispiele
Objekt erzeugen und serialisieren
const skew = new CSSSkewY(CSS.deg(15));
console.log(skew.ay.value, skew.ay.unit);
console.log(skew.is2D);
console.log(skew.toString());
Scherung per attributeStyleMap auf ein Element anwenden
const card = document.querySelector('.card');
const transform = new CSSTransformValue([
new CSSTranslate(CSS.px(20), CSS.px(0)),
new CSSSkewY(CSS.deg(-8))
]);
card.attributeStyleMap.set('transform', transform);
console.log(card.style.transform);
Winkel nachträglich ändern (einfache Animation)
const box = document.querySelector('#box');
const skew = new CSSSkewY(CSS.deg(0));
const value = new CSSTransformValue([skew]);
let angle = 0;
const tick = () => {
angle = (angle + 1) % 30;
skew.ay = CSS.deg(angle);
box.attributeStyleMap.set('transform', value);
requestAnimationFrame(tick);
};
requestAnimationFrame(tick);
Matrix berechnen und Typfehler abfangen
const m = new CSSSkewY(CSS.deg(45)).toMatrix();
console.log(m.b.toFixed(3)); // tan(45°)
try {
new CSSSkewY(CSS.px(10)); // keine Winkeleinheit
} catch (err) {
console.log(err.name);
}
// Wichtig · Fallstricke
- TypeError: Wenn
aykein Winkel ist (z. B.CSS.px(10)oder eine Zahl ohne Einheit), wirft der Konstruktor einenTypeError. Das gilt auch, wenn du später einen ungültigen Wert anayzuweist. - is2D: Bei
CSSSkewYistis2Dimmertrue. Wenn du diese Eigenschaft setzt, passiert nichts. - Kein direktes Setzen: Ein einzelnes
CSSSkewY-Objekt kann nicht direkt antransformübergeben werden. Es muss in einemCSSTransformValuestecken. - Browser-Unterstützung: CSS Typed OM gibt es in Chromium-Browsern (Chrome, Edge, Opera) und in neueren Safari-Versionen. Firefox unterstützt die Schnittstelle nicht. Prüfe deshalb vorher mit
if ('CSSSkewY' in window)und greif sonst aufelement.style.transform = 'skewY(10deg)'zurück. - Bei Winkeln nahe ±90° geht
tan()gegen unendlich. Die Matrix wird dann extrem verzerrt, das Element ist praktisch nicht mehr sichtbar.