Window: getComputedStyle() Methode
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.
Die Window.getComputedStyle()
-Methode gibt ein Objekt zurück, das die Werte aller CSS-Eigenschaften eines Elements enthält, nachdem aktive Stylesheets angewendet und alle grundlegenden Berechnungen dieser Werte gelöst wurden.
Einzelne CSS-Eigenschaftswerte werden über APIs des zurückgegebenen CSSStyleDeclaration
-Objekts oder durch Indizierung mit CSS-Eigenschaftsnamen abgerufen. Die von getComputedStyle
zurückgegebenen Werte sind aufgelöste Werte.
Syntax
getComputedStyle(element)
getComputedStyle(element, pseudoElt)
Parameter
element
-
Das
Element
, für das der berechnete Stil abgerufen werden soll. pseudoElt
Optional-
Ein String, der das Pseudo-Element angibt, das abgeglichen werden soll. Wird ausgelassen (oder
null
) für reale Elemente.
Rückgabewert
Ein live CSSStyleDeclaration
-Objekt, das sich automatisch aktualisiert, wenn die Stile des Elements geändert werden.
Zu beachten:
- Das zurückgegebene
CSSStyleDeclaration
-Objekt enthält aktive Werte für CSS-Eigenschaften Langformen sowie Kurzform-Namen. Beispielsweise enthält das zurückgegebene Objekt Einträge fürborder-bottom-width
zusätzlich zuborder-width
undborder
Kurzformeigenschaftsnamen. - Die zurückgegebenen Werte sind manchmal bewusst ungenau. Um das Sicherheitsproblem des "CSS History Leak" zu vermeiden, können Browser über die berechneten Stile für einen besuchten Link lügen und Werte zurückgeben, als hätte der Benutzer die verlinkte URL nie besucht. Siehe Verstopfung des CSS History Leak und Datenschutzbezogene Änderungen an CSS
:visited
für Beispiele, wie dies implementiert wird. - Während CSS-Übergängen gibt
getComputedStyle
den ursprünglichen Eigenschaftswert in Firefox zurück, aber den endgültigen Eigenschaftswert in WebKit. - In Firefox geben Eigenschaften mit dem Wert
auto
den verwendeten Wert zurück, nicht den Wertauto
. Wenn Sie alsotop:auto
undbottom:0
auf ein Element mitheight:30px
und einem umgebenden Block vonheight:100px
anwenden, gibt der berechnete Stil von Firefox fürtop
70px
zurück, da 100 − 30 = 70. - Aus Kompatibilitätsgründen werden serialisierte Farbwerte als
rgb()
-Farben ausgedrückt, wenn der Alphakanalwert genau1
ist, undrgba()
-Farben andernfalls. In beiden Fällen wird die alte Syntax verwendet, mit Kommata als Trenner (zum Beispielrgb(255, 0, 0)
).
Das zurückgegebene Objekt ist der gleiche Typ CSSStyleDeclaration
wie das Objekt, das über die style
-Eigenschaft des Elements zurückgegeben wird. Die beiden Objekte haben jedoch unterschiedliche Zwecke:
- Das Objekt von
getComputedStyle
ist schreibgeschützt und sollte verwendet werden, um den Stil des Elements zu inspizieren — einschließlich jener, die durch ein<style>
-Element oder ein externes Stylesheet festgelegt sind. - Das
element.style
-Objekt sollte verwendet werden, um Stile für dieses Element zu setzen oder Stile zu inspizieren, die direkt durch JavaScript-Manipulation oder das globalestyle
-Attribut hinzugefügt wurden.
Ausnahmen
TypeError
-
Wenn das übergebene Objekt kein
Element
ist oder derpseudoElt
kein gültiger Pseudo-Element-Selektor ist oder::part()
oder::slotted()
.Hinweis: Ein gültiger Pseudo-Element-Selektor bezieht sich auf die syntaktische Gültigkeit, z.B. wird
::unsupported
als gültig betrachtet, selbst wenn das Pseudo-Element selbst nicht unterstützt wird. Zudem unterstützt der neueste W3-Standard explizit nur::before
und::after
, während der CSS WG-Entwurf diesen Wert nicht einschränkt. Die Browser-Kompatibilität kann variieren.
Beispiele
Abrufen berechneter Stile
In diesem Beispiel stylen wir ein <p>
-Element, rufen diese Stile dann mit getComputedStyle()
ab und geben sie im Textinhalt des <p>
aus.
HTML
<p>Hello</p>
CSS
p {
width: 400px;
margin: 0 auto;
padding: 20px;
font: 2rem/2 sans-serif;
text-align: center;
background: purple;
color: white;
}
JavaScript
const para = document.querySelector("p");
const compStyles = window.getComputedStyle(para);
para.textContent =
`My computed font-size is ${compStyles.getPropertyValue("font-size")},\n` +
`and my computed line-height is ${compStyles.getPropertyValue(
"line-height",
)}.`;
Ergebnis
Verwendung mit Pseudo-Elementen
getComputedStyle
kann Stilinformationen von Pseudo-Elementen (wie ::after
, ::before
, ::marker
, ::line-marker
— siehe die Pseudo-Element-Spezifikation) abrufen.
<style>
h3::after {
content: " rocks!";
}
</style>
<h3>Generated content</h3>
<script>
const h3 = document.querySelector("h3");
const result = getComputedStyle(h3, ":after").content;
console.log("the generated content is: ", result); // returns ' rocks!'
</script>
Spezifikationen
Specification |
---|
CSS Object Model (CSSOM) # dom-window-getcomputedstyle |