Heim >Web-Frontend >js-Tutorial >Wie rufe ich HTML-Elementstilwerte in JavaScript browserübergreifend ab?

Wie rufe ich HTML-Elementstilwerte in JavaScript browserübergreifend ab?

Linda Hamilton
Linda HamiltonOriginal
2024-11-30 05:50:09755Durchsuche

How to Retrieve HTML Element Style Values in JavaScript Across Browsers?

HTML-Elementstilwerte in JavaScript abrufen

Für Elemente mit Stilen, die über das Style-Tag definiert werden, wie unten dargestellt:

<style>
#box {
  width: 100px;
}
</style>

<div>

Um Stilwerte mit JavaScript abzurufen, reicht die Eigenschaft element.style allein nicht aus, da Es stellt nur Inline- oder JavaScript-definierte Stile bereit.

Berechnete Stile

Wir müssen auf den berechneten Stil des Elements zugreifen, der den tatsächlichen Stil darstellt wird darauf angewendet, nachdem von übergeordneten Elementen geerbt und die angewendeten CSS-Regeln berücksichtigt wurden. In JavaScript können wir berechnete Stile mit zwei Methoden erhalten:

1. DOM-Standard (Andere Browser):

document.defaultView.getComputedStyle(element, null).getPropertyValue(propertyName);

2. IE-spezifisch:

element.currentStyle[propertyName];

Der IE verwendet jedoch camelCase-Eigenschaftsnamen (z. B. „font-Size“) und gibt möglicherweise Größen in Nicht-Pixel-Einheiten zurück, während die Standardmethode Eigenschaftsnamen mit Bindestrich verwendet ( z.B. „font-size“) und liefert immer Pixelwerte.

Cross-Browser Lösung

Um berechnete Stile browserübergreifend abzurufen, verwenden Sie die folgende Funktion:

function getStyle(element, property) {
  var value, defaultView = (element.ownerDocument || document).defaultView;
  // Sanitize property name for different browsers
  property = property.replace(/([A-Z])/g, "-").toLowerCase();

  if (defaultView && defaultView.getComputedStyle) {
    return defaultView.getComputedStyle(element, null).getPropertyValue(property);
  } else if (element.currentStyle) {
    // Convert camelCase property name to hyphenated
    property = property.replace(/\-(\w)/g, function(str, letter) {
      return letter.toUpperCase();
    });

    value = element.currentStyle[property];
    if (/^\d+(em|pt|%|ex)?$/i.test(value)) {
      return (function(value) {
        var oldLeft = element.style.left, oldRsLeft = element.runtimeStyle.left;
        element.runtimeStyle.left = element.currentStyle.left;
        element.style.left = value || 0;
        value = element.style.pixelLeft + "px";
        element.style.left = oldLeft;
        element.runtimeStyle.left = oldRsLeft;
        return value;
      })(value);
    }
    return value;
  }
}

Das obige ist der detaillierte Inhalt vonWie rufe ich HTML-Elementstilwerte in JavaScript browserübergreifend ab?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn