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-Stil eines Elements in Form eines live CSSStyleProperties-Objekts zurück. Dieses Objekt kann verwendet werden, um die Inline-Stile eines Elements abzurufen und festzulegen.

Wert

Ein live CSSStyleProperties-Objekt.

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

Beschreibung

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

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

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

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

Um spezifische Stile zu einem Element hinzuzufügen, ohne andere Stilwerte zu ändern, ist es in der Regel vorzuziehen, individuelle Eigenschaften auf dem CSSStyleProperties-Objekt festzulegen. Zum Beispiel kann man element.style.backgroundColor = "red" schreiben. Eine Stil-Deklaration wird durch das Setzen auf null oder einen leeren String zurückgesetzt, z.B. element.style.color = null.

Die style-Eigenschaft hat die gleiche Priorität in der CSS-Kaskade wie eine Inline-Stil-Deklaration, die über das style-Attribut festgelegt wird.

Beispiele

Grundlegende Verwendung

Dieses Code-Beispiel zeigt, wie Sie die Inline-Stile eines Elements auslesen können. In jedem Fall werden die strichbenannten Stileigenschaften mit getPropertyValue() gelesen und die Camel-Case-Eigenschaften mit dem Punktoperator abgerufen.

HTML

Zuerst definieren wir ein <div>-Element und ein verschachteltes Element, die unterschiedliche Inline-Stile definieren, sowohl in Kurzschrift- 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 holt das innere Element, liest dessen Stil und protokolliert die strichbenannten und camel-case-benannten CSS-Stileigenschaften.

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 strich- und camel-case-benannten Eigenschaften gelesen werden, gleich sind. Wir sehen auch, dass die border-top-Eigenschaft, die dem style-Attribut des Elements entspricht, vorhanden ist und dass für jeden Teil eine Langhandeigenschaft 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, sodass sein Wert auf den leeren String ("") gesetzt ist.

Aufzählung von Stilinformationen

Dieses Beispiel demonstriert, wie wir die strichbenannten Eigenschaften von CSSStyleProperties aufzählen können.

HTML

Zuerst definieren wir ein <div>-Element und ein verschachteltes Element, die unterschiedliche Inline-Stile definieren, sowohl in Kurzschrift- 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 durchläuft die aufzählbaren Eigenschaften der CSSStyleProperties und protokolliert das Ergebnis.

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 Langhand-CSS-Eigenschaften des Elements aufzählbare Werte sind (die Inline-Kurzschrift-Eigenschaft wird nicht aufgezählt).

Aktualisierung des Rahmenstils

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 Stileigenschaften eines HTML-Absatz-Elements über das Stilobjekt am Element und die CSS-Stileigenschaften dieses Objekts abgerufen und gesetzt, die aus dem DOM abgerufen und gesetzt werden können. In diesem Fall manipulieren Sie die individuellen 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