197 of 264 menu

Functie getComputedStyle

De functie getComputedStyle maakt het mogelijk om de waarde van elke CSS-eigenschap van een element te verkrijgen, zelfs vanuit een CSS-bestand.

Syntaxis

let object = getComputedStyle(element);

Details

Hoe het werkt (let op: niet zoals we verwachten): de functie accepteert een element als parameter, en retourneert een object dat alle CSS-eigenschappen van het doorgegeven element bevat. Laten we dit object in een variabele stoppen style. De naam is willekeurig, het is gewoon een variabele - hoe we het bedenken, zo zullen we ernaar verwijzen:

let elem = document.querySelector('#elem'); let style = getComputedStyle(elem); // in style zitten de CSS-eigenschappen

Laten we bijvoorbeeld de breedte weergeven. Dit wordt gedaan zo - style.width:

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

Om bijvoorbeeld de linker padding weer te geven - doen we zo - style.paddingLeft:

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

In het volgende voorbeeld geven we alle CSS-eigenschappen die ons interesseren voor ons element weer:

<div id="elem">tekst</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); // geeft '30px' weer console.log('borderTopWidth: ' + style.borderTopWidth); // geeft '20px' weer console.log('borderTopStyle: ' + style.borderTopStyle); // geeft 'solid' weer

Onnauwkeurigheid van getComputedStyle

Soms werkt de functie getComputedStyle niet helemaal correct met breedte en hoogte. Dit komt doordat padding en rand het blok uitbreiden. In het volgende voorbeeld heeft het blok een breedte van 200px, evenals een rand en border. De werkelijke breedte van het blok is 300px, maar getComputedStyle zal toch 200px weergeven:

<div id="elem">tekst</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); // geeft '200px' weer console.log('height: ' + style.height); // geeft '200px' weer

Dat wil zeggen: het blijkt dat getComputedStyle de blokuitbreiding negeert en zijn afmetingen toont alsof deze uitbreiding er niet was. Maar dat is nog niet alles: de aan- of afwezigheid van een schuifbalk is ook van belang - sommige browsers trekken de breedte van de schuifbalk af van de breedte berekend via getComputedStyle, en anderen doen dat niet. Kortom, hier is alles absoluut niet cross-browser en het is beter om getComputedStyle niet te gebruiken voor het bepalen van breedte en hoogte, maar gebruik te maken van de metrieken die we iets later zullen bestuderen.

Berekende waarden

Er is nog een nuance: als de breedte is ingesteld in % - dan zullen we na de werking van getComputedStyle het zien in px. Dat wil zeggen, in feite krijgen we niet de ingestelde breedte, maar de berekende. Zie het volgende voorbeeld:

<div id="elem">tekst</div> #elem { width: 30%; /* breedte ingesteld in % */ height: 200px; padding: 30px; border: 20px solid #BCBCBC; overflow: auto; } let elem = document.querySelector('#elem'); let style = getComputedStyle(elem); console.log('width: ' + style.width); // geeft de breedte in px weer

Zie ook

  • de eigenschap cssText,
    die CSS-stijlen massaal instelt
Nederlands
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Wij gebruiken cookies voor de werking van de site, analyse en personalisatie. De verwerking van gegevens gebeurt volgens het Privacybeleid.
alles accepteren aanpassen weigeren