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
Freigeben: 2024-11-30 05:50:09
Original
802 Leute haben es durchsucht

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>
Nach dem Login kopieren

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);
Nach dem Login kopieren

2. IE-spezifisch:

element.currentStyle[propertyName];
Nach dem Login kopieren

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;
  }
}
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage