197 of 264 menu

Funktionen getComputedStyle

Funktionen getComputedStyle gør det muligt at få værdien af enhver CSS egenskab for et element, selv fra en CSS-fil.

Syntaks

let objekt = getComputedStyle(element);

Detaljer

Sådan fungerer den (vær opmærksom: ikke som vi forventer): funktionen tager et element som parameter, og returnerer et objekt, som indeholder alle CSS egenskaber for det passede element. Lad os putte dette objekt i variablen style. Navnet er vilkårligt, det er blot en variabel - som vi finder på, sådan vil vi tilgå den:

let elem = document.querySelector('#elem'); let style = getComputedStyle(elem); // style indeholder CSS egenskaber

Lad os f.eks. udskrive bredden. Dette gøres sådan - style.width:

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

For at udskrive f.eks. venstre padding - gør vi sådan - style.paddingLeft:

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

I det næste eksempel vil vi udskrive alle de CSS egenskaber der interesserer os for vores element:

<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); // vil udskrive '30px' console.log('borderTopWidth: ' + style.borderTopWidth); // vil udskrive '20px' console.log('borderTopStyle: ' + style.borderTopStyle); // vil udskrive 'solid'

Unøjagtighed ved getComputedStyle

Undertiden fungerer funktionen getComputedStyle ikke helt korrekt med bredde og højde. Dette skyldes, at padding og kant udvider blokken. I det næste eksempel er blokken tildelt en bredde på 200px, samt en kant og border. Blokkens faktiske bredde er 300px, men getComputedStyle vil alligevel udskrive 200px:

<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); // vil udskrive '200px' console.log('height: ' + style.height); // vil udskrive '200px'

Det vil sige: det viser sig, at getComputedStyle ignorerer blokudvidelsen og viser dens størrelse som om denne udvidelse ikke var der. Men det er ikke alt: tilstedeværelsen eller fraværet af en scrollbar har også betydning - nogle browsere trækker bredden af scrollbaren fra bredden beregnet via getComputedStyle, mens andre ikke gør. Kort sagt, alt er overhovedet ikke cross-browser kompatibelt her, og det er bedre ikke at bruge getComputedStyle til at bestemme bredde og højde, men at bruge de metrikker, som vi vil lære lidt nedenfor.

Beregnede værdier

Der er endnu en nuance: hvis bredden er angivet i % - så efter getComputedStyle har virket, vil vi se den i px. Det vil sige, i bund og grund får vi ikke den angivne bredde, men den beregnede. Se følgende eksempel:

<div id="elem">text</div> #elem { width: 30%; /* bredde angivet i % */ height: 200px; padding: 30px; border: 20px solid #BCBCBC; overflow: auto; } let elem = document.querySelector('#elem'); let style = getComputedStyle(elem); console.log('width: ' + style.width); // vil udskrive bredden i px

Se også

  • egenskaben cssText,
    som massetildeler CSS-stilarter
Dansk
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDeutschΕλληνικά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
Vi bruger cookies til webstedets funktion, analyse og personalisering. Behandling af data foregår i henhold til Fortrolighedspolitikken.
accepter alle tilpas afvis