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

View in English Always switch to English

HTMLElement: style-Eigenschaft

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since ⁨Juli 2015⁩.

Die schreibgeschützte style-Eigenschaft des HTMLElement gibt den Inline-style eines Elements in Form eines dynamischen CSSStyleProperties-Objekts zurück. Dieses Objekt kann verwendet werden, um die Inline-Stile eines Elements abzurufen und festzulegen.

Wert

Ein dynamisches CSSStyleProperties-Objekt.

Hinweis: Frühere Versionen der Spezifikation gaben eine CSSStyleDeclaration zurück (von denen CSSStyleProperties abgeleitet ist). Siehe die Tabelle zur Browser-Kompatibilität für Informationen zur Unterstützung in Browsern.

Beschreibung

Die Werte der Inline-Stile, die im style-Attribut des Elements festgelegt sind, werden durch entsprechende Eigenschaften des zurückgegebenen CSSStyleProperties-Objekts wiedergegeben.

Hinweis: CSSStyleProperties hat Bindestrich- und entsprechende Camel-Case-Eigenschaften für alle vom Browser unterstützten CSS-Eigenschaften (nicht nur die mit Inline-Stilen). Eigenschaften, die keinen entsprechenden Inline-Stil haben, werden auf "" gesetzt.

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

Die style-Eigenschaft ist schreibgeschützt, d.h. es ist nicht möglich, ein CSSStyleProperties-Objekt zuzuweisen. Dennoch ist es möglich, einen Inline-Stil zu setzen, indem direkt ein String an die Eigenschaft zugewiesen wird. In diesem Fall kann der String aus cssText gelesen werden. Die Verwendung von style auf diese Weise überschreibt alle Inline-Stile des Elements vollständig.

Um einem Element spezifische Stile hinzuzufügen, ohne andere Stilwerte zu ändern, ist es im Allgemeinen vorzuziehen, einzelne Eigenschaften auf dem CSSStyleProperties-Objekt festzulegen. Zum Beispiel können Sie element.style.backgroundColor = "red" schreiben. Eine Stildeklaration wird zurückgesetzt, indem sie auf null oder einen leeren String gesetzt wird, z.B. element.style.color = null.

Die style-Eigenschaft hat die gleiche Priorität in der CSS-Kaskade wie eine über das style-Attribut gesetzte Inline-Stildeklaration.

Beispiele

Grundlegende Nutzung

Dieses Codebeispiel zeigt, wie Sie die Inline-Stile eines Elements lesen können. In jedem Fall werden die mit Bindestrich benannten Stil-Eigenschaften mit getPropertyValue() gelesen und die Camel-Case-Eigenschaften mit dem Punkt-Operator abgerufen.

HTML

Zuerst definieren wir ein <div>-Element und ein verschachteltes Element, das unterschiedliche Inline-Stile definiert, sowohl in Kurz- als auch in Langform.

html
<div style="font-weight: bold;">
  <div style="border-top: 1px solid blue; color: red;" id="elt">
    An example div
  </div>
  <pre id="log"></pre>
</div>

JavaScript

Der folgende Code bekommt das innere Element, liest seinen Stil und gibt die Bindestrich- und Camel-Case-benannten CSS-Stil-Eigenschaften aus.

js
const element = document.getElementById("elt");
const elementStyle = element.style;

// Longhand styles
log(`"border-top" = '${elementStyle.getPropertyValue("border-top")}'`);
log(`"borderTop" = '${elementStyle.borderTop}'`);

// Expanded longhand styles
log(
  `"border-top-width" = '${elementStyle.getPropertyValue("border-top-width")}'`,
);
log(`"borderTopWidth" = '${elementStyle.borderTopWidth}'`);

log(
  `"border-top-style" = '${elementStyle.getPropertyValue("border-top-style")}'`,
);
log(`"borderTopStyle" = '${elementStyle.borderTopStyle}'`);

log(
  `"border-top-color" = '${elementStyle.getPropertyValue("border-top-color")}'`,
);
log(`"borderTopColor" = '${elementStyle.borderTopColor}'`);

// Original shorthand style
log(`"color" = '${elementStyle.getPropertyValue("color")}'`);
log(`"color" = '${elementStyle.color}'`);

// Defined on parent
log(`"font-weight" = '${elementStyle.getPropertyValue("font-weight")}'`);
log(`"fontWeight" = '${elementStyle.fontWeight}'`);

Ergebnisse

Das Ergebnis wird unten gezeigt. In jedem Fall sehen wir, dass die Stile, die mit den Bindestrich- und Camel-Case-beschrifteten Eigenschaften gelesen werden, gleich sind. Wir sehen auch, dass die border-top-Eigenschaft, die dem style-Attribut des Elements entspricht, vorhanden ist und dass eine Langform-Eigenschaft für jeden ihrer Teile definiert ist (border-top-color, border-top-style und border-top-width).

Beachten Sie, dass font-weight auf den CSSStyleProperties definiert ist (wie alle anderen CSS-Eigenschaften, obwohl wir sie nicht protokolliert haben). Es ist jedoch kein Inline-Stil für das verschachtelte Element, daher wird sein Wert auf den leeren String ("") gesetzt.

Aufzählung von Stilinformationen

Dieses Beispiel zeigt, wie wir die Bindestrich-Eigenschaften von CSSStyleProperties aufzählen können.

HTML

Zuerst definieren wir ein <div>-Element und ein verschachteltes Element, das unterschiedliche Inline-Stile definiert, sowohl in Kurz- als auch in Langform. Dies ist das gleiche HTML wie im vorherigen Beispiel.

html
<div style="font-weight: bold;">
  <div style="border-top: 1px solid blue; color: red;" id="elt">
    An example div
  </div>
  <pre id="log"></pre>
</div>

JavaScript

Der folgende Code iteriert über die aufzählbaren Eigenschaften der CSSStyleProperties und gibt das Ergebnis aus.

js
const element = document.getElementById("elt");
const elementStyle = element.style;

// Loop through all the element's styles using `for...in`
for (const prop in elementStyle) {
  // Check the property belongs to the CSSStyleProperties instance
  // Ensure the property is a numeric index (indicating a dash-named/inline style)
  if (
    Object.hasOwn(elementStyle, prop) &&
    !Number.isNaN(Number.parseInt(prop, 10))
  ) {
    log(
      `${
        elementStyle[prop]
      } = '${elementStyle.getPropertyValue(elementStyle[prop])}`,
    );
  }
}

Ergebnisse

Das Ergebnis wird unten gezeigt. Beachten Sie, dass nur die Langform-CSS-Eigenschaften des Elements aufgezählte Werte sind (die inline gesetzten Kurzschrifts-Eigenschaften werden nicht aufgezählt).

Aktualisierung des Randstils

html
<div id="box"></div>

<form name="FormName">
  <button id="btn1">Make border 20px-wide</button>
  <button id="btn2">Make border 5px-wide</button>
</form>
css
#box {
  border: 5px solid green;
  width: 100px;
  height: 100px;
}
js
function setBorderWidth(width) {
  document.getElementById("box").style.borderWidth = `${width}px`;
}

document.getElementById("btn1").addEventListener("click", () => {
  setBorderWidth(20);
});
document.getElementById("btn2").addEventListener("click", () => {
  setBorderWidth(5);
});

Manipulation von Stilen

In diesem Beispiel werden einige grundlegende Stil-Eigenschaften eines HTML-Absatzelements über das Stil-Objekt auf dem Element und die CSS-Stil-Eigenschaften dieses Objekts, die aus dem DOM abgerufen und gesetzt werden können, zugegriffen. In diesem Fall manipulieren Sie die einzelnen Stile direkt. Sie können auch styleSheets und deren Regeln verwenden, um Stile für ganze Dokumente zu ändern.

html
<p id="pid">Some text</p>
<form>
  <p><button type="button">Change text</button></p>
</form>
js
function changeText() {
  const p = document.getElementById("pid");

  p.style.color = "blue";
  p.style.fontSize = "18pt";
}

document.querySelector("button").addEventListener("click", () => {
  changeText();
});

Spezifikationen

Specification
CSS Object Model (CSSOM)
# dom-elementcssinlinestyle-style

Browser-Kompatibilität

Siehe auch