197 of 264 menu

Функktion getComputedStyle

Die Funktion getComputedStyle ermöglicht es, den Wert einer beliebigen CSS-Eigenschaft eines Elements zu erhalten, sogar aus einer CSS-Datei.

Syntax

let Objekt = getComputedStyle(Element);

Details

So funktioniert es (Achtung: nicht so, wie wir es erwarten): Die Funktion nimmt das Element als Parameter entgegen und gibt ein Objekt zurück, das alle CSS-Eigenschaften des übergebenen Elements enthält. Lassen Sie uns dieses Objekt in einer Variable style speichern. Der Name ist beliebig, es ist einfach eine Variable - wie wir sie uns ausdenken, so werden wir darauf zugreifen:

let elem = document.querySelector('#elem'); let style = getComputedStyle(elem); // in style liegen die CSS-Eigenschaften

Lassen Sie uns zum Beispiel die Breite ausgeben. Das macht man so - style.width:

let elem = document.querySelector('#elem'); let style = getComputedStyle(elem); console.log(style.width);

Um zum Beispiel den linken padding auszugeben - macht man so - style.paddingLeft:

let elem = document.querySelector('#elem'); let style = getComputedStyle(elem); console.log(style.paddingLeft);

Im nächsten Beispiel geben wir alle für uns interessanten CSS-Eigenschaften für unser Element aus:

<div id="elem">text</div> #elem { width: 200px; height: 200px; padding: 30px; border: 20px solid #BCBCBC; overflow: auto; } let elem = document.querySelector('#elem'); let style = getComputedStyle(elem); console.log('paddingLeft: ' + style.paddingLeft); // gibt '30px' aus console.log('borderTopWidth: ' + style.borderTopWidth); // gibt '20px' aus console.log('borderTopStyle: ' + style.borderTopStyle); // gibt 'solid' aus

Ungenauigkeit von getComputedStyle

Manchmal funktioniert die Funktion getComputedStyle nicht ganz korrekt mit Breite und Höhe. Das hängt damit zusammen, dass padding und Rand den Block erweitern. Im nächsten Beispiel hat der Block eine Breite von 200px, sowie einen Rand und border. Die tatsächliche Breite des Blocks beträgt 300px, aber getComputedStyle gibt trotzdem 200px aus:

<div id="elem">text</div> #elem { width: 200px; height: 200px; padding: 30px; border: 20px solid #BCBCBC; overflow: auto; } let elem = document.querySelector('#elem'); let style = getComputedStyle(elem); console.log('width: ' + style.width); // gibt '200px' aus console.log('height: ' + style.height); // gibt '200px' aus

Das heißt: Es stellt sich heraus, dass getComputedStyle die Blockerweiterung ignoriert und seine Abmessungen so anzeigt, als ob diese Erweiterung nicht vorhanden wäre. Das ist aber noch nicht alles: Auch das Vorhandensein oder Fehlen einer Scrollleiste spielt eine Rolle - einige Browser subtrahieren die Breite der Scrollleiste von der Breite, die über getComputedStyle berechnet wurde, andere subtrahieren sie nicht. Kurz gesagt, hier ist überhaupt alles nicht cross-browser-kompatibel und es ist besser, getComputedStyle nicht zur Bestimmung von Breite und Höhe zu verwenden, sondern die Metriken zu nutzen, die wir weiter unten studieren werden.

Berechnete Werte

Es gibt noch einen weiteren Nuance: Wenn die Breite in % angegeben ist - dann werden wir sie nach der Anwendung von getComputedStyle in px sehen. Das heißt, im Grunde erhalten wir nicht die angegebene Breite, sondern die berechnete. Sehen Sie sich das folgende Beispiel an:

<div id="elem">text</div> #elem { width: 30%; /* Breite in % angegeben */ height: 200px; padding: 30px; border: 20px solid #BCBCBC; overflow: auto; } let elem = document.querySelector('#elem'); let style = getComputedStyle(elem); console.log('width: ' + style.width); // gibt die Breite in px aus

Siehe auch

  • die Eigenschaft cssText,
    die CSS-Stile massenweise setzt
Deutsch
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Wir verwenden Cookies für den Betrieb der Website, Analyse und Personalisierung. Die Datenverarbeitung erfolgt gemäß der Datenschutzerklärung.
alle akzeptieren anpassen ablehnen