Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.

View in English Always switch to English

CSSStyleProperties

Das CSSStyleProperties-Interface des CSS Object Model (CSSOM) repräsentiert die Inline- oder berechneten Stile, die auf ein Element angewendet werden, oder die Stile, die mit einer CSS-Stilregel verbunden sind.

CSSStyleDeclaration CSSStyleProperties

Instanz-Eigenschaften

Dieses Interface erbt auch Eigenschaften seines Elternteils, CSSStyleDeclaration.

Benannte Eigenschaften

Mit Bindestrich benannte und CamelCase-genannte Eigenschaften für alle vom Browser unterstützten CSS-Eigenschaften.

CSSStyleProperties.cssFloat

Spezieller Alias für die float CSS-Eigenschaft.

Instanz-Methoden

Dieses Interface erbt die Methoden seines Elternteils, CSSStyleDeclaration.

Beschreibung

Ein Objekt dieses Typs verfügt über mit Bindestrich benannte Eigenschaften für alle CSS-Eigenschaften, die vom Browser unterstützt werden, einschließlich sowohl Shorthand als auch Langform-Eigenschaften, sowie Eigenschaften mit -moz und -webkit Präfixen. Diese können mithilfe der von der Basis-Klasse CSSStyleDeclaration geerbten Methoden, wie getPropertyValue() und setPropertyValue(), zugegriffen werden.

Zusätzlich hat jede Eigenschaft mit Bindestrich auch eine entsprechende CamelCase-benannte Eigenschaft, bei der die Bindestriche entfernt und jedes Wort nach dem ersten großgeschrieben wird. Das ermöglicht Ihnen beispielsweise, auf die CSS-Eigenschaft margin-top mit der Syntax style.marginTop zuzugreifen (wobei style ein CSSStyleProperties ist), anstatt die umständlichere Syntax style.getPropertyValue("margin-top") oder style["margin-top"] zu verwenden. Die CSS-Eigenschaft float, die ein reserviertes JavaScript-Schlüsselwort ist, wird durch die Eigenschaft cssFloat dargestellt.

Shorthand CSS-Eigenschaften des Elements werden auf ihre entsprechenden Langform-Eigenschaften erweitert. Zum Beispiel wird ein Element mit dem Stil "border-top: 1px solid black" im zurückgegebenen Objekt durch Eigenschaften mit den Namen border-top und borderTop sowie die entsprechenden Langform-Eigenschaften border-top-color und borderTopColor, border-top-style und borderTopStyle, und border-top-width und borderTopWidth dargestellt.

Eigenschaften und Attribute ohne definierten Wert haben standardmäßig den leeren String (""). Bei einem Objekt, das eine Inline-Stil-Deklaration darstellt (keine berechneten Stile), wird dies bei jedem Stil der Fall sein, der nicht im Deklarationsblock definiert ist.

CSSStyleProperties-Objektinstanzen werden über die folgenden APIs bereitgestellt:

Beispiele

Grundlegende Nutzung

Dieses Beispiel demonstriert, wie man lokale und berechnete Elementstile mit sowohl CamelCase als auch mit Bindestrich benannten Eigenschaften erhält und setzt.

HTML

Das HTML definiert ein <div> mit einer Anzahl von festgelegten Stilen, eingebettet in ein weiteres, das das font-weight als bold setzt.

html
<div style="font-weight: bold;">
  <div style="border-top: 3px solid blue; color: red;margin:5px;" id="elt">
    Div content.
    <br />
    Inner: "border-top: 3px solid blue; color: red;margin:5px;".
    <br />
    Outer: "font-weight: bold;"
  </div>
</div>

JavaScript

Erstens holen wir den lokalen und den berechneten Stil für das Element mit der ID "elt".

js
const element = document.querySelector("#elt");
const elementStyle = element.style;
const computedStyle = window.getComputedStyle(element);

Dann bekommen wir die borderTop-Shorthand-Eigenschaft der CSSStyleProperties mithilfe der Punktnotation für sowohl lokale als auch berechnete Stile. Die Nutzung der Punktnotation mit einer CamelCase-Eigenschaft ist der einfachste Weg, auf jede Eigenschaft zuzugreifen.

js
// Get style using dot notation
const elem_borderTop = elementStyle.borderTop;
const comp_borderTop = computedStyle.borderTop;

log('Format: Style = "Element" / "Computed"');
log(`"borderTop" = "${elem_borderTop}" / "${comp_borderTop}"'`);

Wir können dieselbe Eigenschaft auch mithilfe der getPropertyValue()-Methode oder der Klammerschreibweise erhalten.

js
// Get style using dashed-name property value
const elem_border_top = elementStyle.getPropertyValue("border-top");
const comp_border_top = computedStyle.getPropertyValue("border-top");
log(`"border-top" = "${elem_border_top}" / "${elem_border_top}"'`);

Der folgende Code erhält jede der Langform-Eigenschaften, die der Shorthand-Eigenschaft border-top entsprechen, indem er die Punktnotation der Einfachheit halber nutzt.

js
// Get shorthand properties using dot notation
const elem_borderTopWidth = elementStyle.borderTopWidth;
const comp_borderTopWidth = computedStyle.borderTopWidth;
log(`"borderTopWidth" = "${elem_borderTopWidth}" / "${comp_borderTopWidth}"'`);

const elem_borderTopColor = elementStyle.borderTopColor;
const comp_borderTopColor = computedStyle.borderTopColor;
log(`"borderTopColor" = "${elem_borderTopColor}" / "${comp_borderTopColor}"'`);

const elem_borderTopStyle = elementStyle.borderTopStyle;
const comp_borderTopStyle = computedStyle.borderTopStyle;
log(`"borderTopStyle" = "${elem_borderTopStyle}" / "${comp_borderTopStyle}"'`);

const elem_fontWeight = elementStyle.fontWeight;
const comp_fontWeight = computedStyle.fontWeight;
log(`"fontWeight" = "${elem_fontWeight}" / "${comp_fontWeight}"'`);

Zuletzt demonstrieren wir, wie Sie die Punktnotation verwenden können, um einen Eigenschaftswert zu setzen. In dem folgenden Ergebnisbereich werden Sie feststellen, dass der untere Rand des Elements eine solide grüne Linie ist.

js
// Set the bottom border style using dot notation
elementStyle.borderBottom = "5px solid green";

Ergebnisse

Die Ergebnisse werden unten angezeigt. Beachten Sie, dass die Werte der entsprechenden CamelCase- (borderTop) und mit Bindestrich benannten (border-top) Eigenschaften gleich sind. Die lokalen und berechneten Werte für die Langform-Eigenschaften sind oft ebenfalls gleich, außer dass berechnete Eigenschaften die rgb()-Syntax für Farben verwenden und zusätzlich Stile enthalten, die auf dem übergeordneten <div> gesetzt sind, wie z.B. das font-weight.

Enumeriere mit Bindestrich benannte Stileigenschaften

Dieses Beispiel demonstriert, wie man die mit Bindestrich benannten Eigenschaftswerte eines Elements auflistet, sowohl für den Inline- als auch für den berechneten Stil.

HTML

Das HTML definiert ein <div> mit einer Anzahl von festgelegten Stilen, eingebettet in ein weiteres, das das font-weight setzt. Es gibt auch Schaltflächen, um die Inline-Stile und die berechneten Stile für das Element zu erhalten (und versteckten Code für eine Zurücksetzschaltfläche und Logging).

html
<div style="font-weight: bold;">
  <div style="border-top: 1px solid blue; color: red;" id="elt">
    An example div
  </div>
</div>
<button id="inline_style" type="button">Inline Style</button>
<button id="computed_style" type="button">Computed Style</button>

JavaScript

Der Code definiert zuerst die Funktion, die wir verwenden werden, um die Eigenschaften unseres Elements mit der elt-ID aufzulisten. Dies nutzt CSSStyleDeclaration.getPropertyValue(), um den Wert jeder mit Bindestrich benannten Eigenschaft abzurufen, die dem Objekt gehört und einen numerischen Index hat.

js
function getPopulatedProperties(elementStyles) {
  for (const prop in elementStyles) {
    if (
      // Check the property belongs to the CSSStyleProperties instance
      // Check property has a numeric index (indicates inline/dash-named style)
      Object.hasOwn(elementStyles, prop) &&
      !Number.isNaN(Number.parseInt(prop, 10))
    ) {
      log(
        `${elementStyles[prop]} = '${elementStyles.getPropertyValue(
          elementStyles[prop],
        )}'`,
      );
    }
  }
}

Der folgende Code überprüft und protokolliert, ob CSSStyleProperties definiert ist. Falls es existiert, erstellen wir Schaltflächen-Ereignis-Handler, um die Inline- oder berechneten Stile für das Element zu erhalten und deren Namen und Werte zu protokollieren.

js
if (typeof window.CSSStyleProperties === "undefined") {
  log("CSSStyleProperties is not supported on this browser.");
} else {
  const element = document.querySelector("#elt");

  const inlineStyle = document.querySelector("#inline_style");
  inlineStyle.addEventListener("click", () => {
    clearLog();
    const elementStyle = element.style;
    getPopulatedProperties(elementStyle);
  });

  const computedStyle = document.querySelector("#computed_style");
  computedStyle.addEventListener("click", () => {
    clearLog();
    const compStyles = window.getComputedStyle(element);
    getPopulatedProperties(compStyles);
  });
}

Ergebnisse

Drücken Sie die Schaltflächen, um die mit Bindestrich benannten Eigenschaftsnamen und Werte für die Inline- und berechneten Stile des Elements anzuzeigen. Beachten Sie, dass die Inline-Stile nur die auf dem tatsächlichen Element definierten Stile enthalten: alle anderen Eigenschaften haben den Wert "" und werden nicht angezeigt. Die berechneten Stile enthalten auch font-weight, das auf dem übergeordneten Element definiert ist, und viele weitere berechnete Stile.

Spezifikationen

Specification
CSS Object Model (CSSOM)
# cssstyleproperties

Browser-Kompatibilität