Start · Sprachen · JavaScript · Referenz · new CSSPositionValue()

new CSSPositionValue()

Methode

Erzeugt ein <code>CSSPositionValue</code>-Objekt, das eine zweidimensionale Position (x/y) für Eigenschaften wie <code>object-position</code> im CSS Typed OM darstellt.

seit JavaScript Experimentell, veraltet: CSS Typed OM (früher Entw deprecated seit ja Kategorie: webapi

Signatur

new CSSPositionValue(x, y)

Beschreibung

Der Konstruktor CSSPositionValue() gehörte zu einem frühen Entwurf der CSS Typed Object Model API (Houdini). Er erzeugt ein Objekt, das eine Position aus einem horizontalen und einem vertikalen Versatz darstellt. Solche Werte kommen bei CSS-Eigenschaften wie object-position, background-position oder transform-origin vor.

Beide Argumente müssen CSSNumericValue-Objekte sein, typischerweise erzeugt mit den Fabrikfunktionen CSS.px(), CSS.percent() oder CSS.em(). Die Werte stehen danach über die les- und schreibbaren Eigenschaften x und y des Objekts zur Verfügung.

Die Schnittstelle wurde aus der Spezifikation entfernt und war nur in Chromium hinter einem Experimentier-Flag verfügbar. In der aktuellen Typed-OM-Spezifikation werden Positionswerte als CSSStyleValue oder als Liste von CSSUnitValue-Objekten dargestellt. Den Konstruktor sollten Sie deshalb nur nach einer Feature-Erkennung verwenden. Für echten Code ist er nicht geeignet.

Parameter

Name Typ Default Beschreibung
$x Pflicht CSSNumericValue Horizontaler Versatz der Position, z. B. CSS.px(10) oder CSS.percent(50).
$y Pflicht CSSNumericValue Vertikaler Versatz der Position, z. B. CSS.px(20) oder CSS.percent(50).

Rückgabewert

Typ
CSSPositionValue
Beschreibung
Ein neues CSSPositionValue-Objekt mit den Eigenschaften x und y.

Beispiele

Feature-Erkennung vor der Verwendung

const hatPositionValue = typeof window !== 'undefined' && 'CSSPositionValue' in window;
const hatTypedOM = typeof CSS !== 'undefined' && typeof CSS.px === 'function';

console.log(`CSSPositionValue: ${hatPositionValue}, Typed OM: ${hatTypedOM}`);
CSSPositionValue: false, Typed OM: true

Position erzeugen und auslesen

if ('CSSPositionValue' in window) {
  const pos = new CSSPositionValue(CSS.px(10), CSS.percent(50));
  console.log(pos.x.value, pos.x.unit); // 10 'px'
  console.log(pos.y.value, pos.y.unit); // 50 'percent'
} else {
  console.log('CSSPositionValue wird nicht unterstützt.');
}
CSSPositionValue wird nicht unterstützt.

object-position setzen mit Fallback

const img = document.querySelector('img');

const setzePosition = (el, x, y) => {
  if ('CSSPositionValue' in window && el.attributeStyleMap) {
    el.attributeStyleMap.set('object-position', new CSSPositionValue(CSS.px(x), CSS.px(y)));
  } else {
    // Fallback: klassischer String-Wert
    el.style.objectPosition = `${x}px ${y}px`;
  }
};

if (img) {
  setzePosition(img, 20, 40);
  console.log(getComputedStyle(img).objectPosition);
}
20px 40px

// Wichtig · Fallstricke

  • Veraltet und nicht verfügbar: CSSPositionValue wurde aus der CSS-Typed-OM-Spezifikation entfernt. Kein aktueller Browser stellt die Schnittstelle standardmäßig bereit. Prüfen Sie deshalb immer zuerst mit 'CSSPositionValue' in window, ob sie vorhanden ist.
  • Beide Argumente müssen CSSNumericValue-Objekte sein. Übergeben Sie reine Zahlen oder Zeichenketten wie '10px', wird ein TypeError ausgelöst.
  • Schlüsselwörter wie center oder left top lassen sich damit nicht direkt abbilden. Nur numerische Versätze sind möglich.
  • Robuste Alternativen sind element.style.objectPosition = '10px 50%' oder attributeStyleMap.set('object-position', '10px 50%') mit einem String-Wert.