Get to know MDN better
Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.
Einige CSSOM-APIs serialisieren Eigenschaftswerte in standardisierte Zeichenfolgenrepräsentationen basierend auf dem Datentyp des Wertes. Zum Beispiel könnte man eine Farbe mit der hsl(240 100% 50%)-Syntax festlegen, aber bei Zugriff über JavaScript wird der Wert in der entsprechenden "rgb(0, 0, 255)"-Syntax zurückgegeben.
CSS-Datentypen können oft in mehreren Syntaxen ausgedrückt werden. Zum Beispiel kann der <color> Datentyp mit benannten Farben (red), hexadezimaler Notation (#ff0000), funktionaler Notation (rgb(255 0 0)) und mehr dargestellt werden. Diese unterschiedlichen Syntaxen sind auf jeder Stufe der CSS-Wertverarbeitung genau gleichwertig, ähnlich wie im JavaScript derselbe String mit einfachen oder doppelten Anführungszeichen geschrieben werden kann oder dieselbe Zahl in unterschiedlichen Formaten geschrieben werden kann (wie 16, 16.0 oder 0x10).
Da CSS all diese Oberflächenrepräsentationen während der Wertverarbeitung in denselben zugrunde liegenden Wert umwandelt, ist es oft unmöglich, die ursprüngliche Syntax aus dem bereits analysierten CSSOM wiederherzustellen. Außerdem ist eine kanonische Darstellung oft nützlicher für Skripte, da sie Vergleiche und Berechnungen basierend darauf ermöglicht, wie der Inhalt dem Benutzer präsentiert wird, anstatt wie er ursprünglich verfasst wurde.
Serialisierung passiert immer dann, wenn CSS-Eigenschaftswerte als Zeichenfolgen über JavaScript-APIs gelesen werden, wie zum Beispiel:
Verschiedene APIs geben CSSStyleDeclaration-Objekte in unterschiedlichen Stadien der Wertverarbeitung zurück, die leicht unterschiedliche Serialisierungsverhalten haben. Zum Beispiel geben Window.getComputedStyle() und HTMLElement.style den aufgelösten Wert von Eigenschaften zurück, während CSSStyleRule.style mehr oder weniger den deklarierten Wert zurückgibt.
Hinweis: Die CSS Typed OM API kann Einheiten und andere CSS-Syntaxen darstellen; jedoch werden Stile, die aus einem Element abgerufen werden, weiterhin verarbeitet und bewahren nicht die ursprüngliche Syntax. Zum Beispiel gibt CSS.cm(1).toString() "1cm" zurück, anstatt in Pixel zu serialisieren, aber element.computedStyleMap().get("margin-left").toString() gibt den aufgelösten Pixelwert zurück.
Jeder CSS-Werttyp hat ein zugehöriges Serialisierungsformat, das durch die CSS-Spezifikationen definiert ist. Einige allgemeine Regeln sind:
Beachten Sie, dass <percentage>-Werte oft in absolute Dimensionen (wie <length>) während der Wertverarbeitung umgewandelt werden, sodass sie möglicherweise nicht als Prozentsätze erscheinen, wenn sie aus berechneten Stilen serialisiert werden. Bei Dimensionen mit Einheiten, wie <frequency>, <length>, <resolution>, und <time>, hängt die serialisierte Einheit vom Kontext ab und ist nicht gut spezifiziert. getComputedStyle() und element.style serialisieren sie in Hz, px, dppx und s jeweils.
Bei der Serialisierung des Wertes für Kurzschreibweiseigenschaften werden seine konstituierenden Langform-Eigenschaften gemäß den Regeln für diese Kurzform serialisiert und kombiniert.
Hinweis: Es gibt viele komplexe Details darüber, wie CSS-Eigenschaften serialisiert werden, insbesondere bei komplexen Eigenschaften wie font. Sie können in den Spezifikationen nicht spezifiziert oder sogar inkonsistent zwischen Browsern sein. Es ist notwendig, das Verhalten für Ihren speziellen Anwendungsfall zu testen und zu überprüfen.
Farben gehören zu den am häufigsten von der Serialisierung betroffenen Typen. Unabhängig davon, ob man eine Farbe mit hsl(), hwb(), einem Schlüsselwort oder einem modernen Farbraum definiert, gibt JavaScript sie normalerweise im veralteten rgb()- oder rgba()-Format zurück.
Die folgenden Beispiele zeigen, wie verschiedene Farbformate serialisiert werden, wenn darauf über JavaScript zugegriffen wird.
Längen sind ein weiterer häufiger Fall. Relative Einheiten (wie em, %) werden oft in absolute Pixel umgerechnet, wenn sie durch JavaScript-APIs serialisiert werden.
Diese Normalisierung ermöglicht es Skripten, Längen konsistent zu vergleichen oder zu berechnen.
| CSS Object Model (CSSOM) # serialize-a-css-value |
| CSS Color Module Level 4 # serialization |
Der Bauplan für ein besseres Internet.
Besuche die gemeinnützige Muttergesellschaft der Mozilla Corporation, die Mozilla Foundation.
Teile dieses Inhalts sind ©1998–2026 von einzelnen mozilla.org-Mitwirkenden. Inhalte sind verfügbar unter einer Creative-Commons-Lizenz.