Signatur
Beschreibung
Die Eigenschaft x gehört zum Interface CSSPositionValue aus einem frühen Entwurf der CSS Typed Object Model API (Houdini). Ein CSSPositionValue sollte Positionsangaben wie object-position oder background-position als typisiertes Objekt abbilden. x steht dabei für den Versatz entlang der horizontalen Achse, y für den Versatz entlang der vertikalen Achse.
Der Wert ist ein CSSNumericValue, meistens ein CSSUnitValue mit einer Einheit wie px, % oder em. Auch berechnete Werte wie CSSMathSum (entspricht calc()) sind möglich. Die Eigenschaft ist lesbar und beschreibbar. So lässt sich die horizontale Position ändern, ohne einen CSS-String zusammenzubauen und wieder zu zerlegen.
In der Praxis sollten Sie CSSPositionValue nicht mehr verwenden. Das Interface wurde aus der Spezifikation entfernt und ist in keinem aktuellen Browser verfügbar. Positionswerte werden heute als CSSStyleValue oder als String behandelt. Einzelne Längen lesen Sie direkt über element.computedStyleMap() und CSSUnitValue aus.
Rückgabewert
CSSUnitValue mit value und unit oder ein CSSMathValue für calc()-Ausdrücke. Einem neuen Wert muss ebenfalls ein CSSNumericValue zugewiesen werden.Beispiele
Position erzeugen und x auslesen (mit Feature-Erkennung)
if ('CSSPositionValue' in window && window.CSS?.px) {
const pos = new CSSPositionValue(CSS.px(120), CSS.percent(50));
console.log(pos.x.value, pos.x.unit);
console.log(pos.x.toString());
} else {
console.log('CSSPositionValue wird nicht unterstützt');
}
Horizontale Position nachträglich verschieben
if ('CSSPositionValue' in window) {
const pos = new CSSPositionValue(CSS.px(10), CSS.px(20));
// x um 15px erhöhen – ergibt einen CSSNumericValue
pos.x = pos.x.add(CSS.px(15));
console.log(pos.x.toString()); // "25px"
} else {
console.log('Fallback: Position als String setzen');
}
Moderner Ersatz: object-position per String und Typed OM
const img = document.createElement('img');
document.body.append(img);
// Horizontale Position setzen – heute als String
img.style.objectPosition = '30% 50%';
if (img.attributeStyleMap) {
const value = img.attributeStyleMap.get('object-position');
console.log(value.toString());
} else {
console.log(getComputedStyle(img).objectPosition);
}
// Wichtig · Fallstricke
- Veraltet:
CSSPositionValueund damit auchxwurden aus der CSS-Typed-OM-Spezifikation entfernt. Die Eigenschaft war nur in frühen Chrome-Versionen hinter einem Experimental-Flag verfügbar. Setzen Sie sie nicht in Produktionscode ein. - Prüfen Sie die Unterstützung immer vorher mit
'CSSPositionValue' in window. Ohne diese Prüfung wirftnew CSSPositionValue()einenReferenceError. - Eine Zuweisung an
xerwartet einenCSSNumericValue. Ein einfacher String wie'10px'oder eine Zahl führt in der ursprünglichen Implementierung zu einemTypeError. Verwenden Sie stattdessenCSS.px(10)oderCSSNumericValue.parse('10px'). - Schlüsselwörter wie
leftodercenterlassen sich nicht direkt alsxabbilden. Sie müssen vorher in Längen oder Prozentwerte umgerechnet werden, etwacenterin50%. - Heute nutzen Sie stattdessen
element.attributeStyleMapundcomputedStyleMap(). Positionswerte werden dort als generischerCSSStyleValuegeliefert.