197 of 264 menu

Funkcija getComputedStyle

Funkcija getComputedStyle omogućava da dobijete vrednost bilo kog CSS svojstva elementa, čak i iz CSS fajla.

Sintaksa

let objekat = getComputedStyle(element);

Detalji

Kako radi (pažnja: ne onako kako očekujemo): parametrom funkcija prihvata element, a vraća objekat, koji u sebi sadrži sva CSS svojstva prosleđenog elementa. Hajde da stavimo taj objekat u promenljivu style. Naziv je proizvoljan, ovo je samo promenljiva - kako smislimo, tako ćemo i da pristupamo:

let elem = document.querySelector('#elem'); let style = getComputedStyle(elem); // u style se nalaze CSS svojstva

Hajde da prikažemo, na primer, širinu. To se radi ovako - style.width:

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

Da biste prikazali, na primer, levi padding - radimo ovako - style.paddingLeft:

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

U sledećem primeru prikazaćemo sva CSS svojstva koja nas zanimaju za naš element:

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

Netačnost getComputedStyle

Ponekad funkcija getComputedStyle radi ne sasvim ispravno sa širinom i visinom. To je povezano sa tim da padding i granica proširuju blok. U sledećem primeru bloku je zadata širina 200px, kao i granica i border. Stvarna širina bloka je 300px, ali getComputedStyle će svejedno prikazati 200px:

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

Dakle: ispada da getComputedStyle zanemaruje proširenje bloka i pokazuje njegove dimenzije kao da tog proširenja nije bilo. Ali to još nije sve: takođe je bitno prisustvo ili odsustvo trake za pomeranje - neki brauzeri oduzimaju širinu trake za pomeranje od širine izračunate preko getComputedStyle, a neki ne oduzimaju. Ukratko, ovde uopšte sve nije više-brauzerski i bolje je getComputedStyle za određivanje širine i visine ne koristiti, već koristiti metrike, koje ćemo da izučimo malo niže.

Izračunate vrednosti

Postoji još jedan nijansa: ako je širina zadata u % - onda ćemo nakon rada getComputedStyle videti je u px. Dakle u suštini mi ne dobijamo zadatu širinu, već izračunatu. Pogledajte na sledećem primeru:

<div id="elem">tekst</div> #elem { width: 30%; /* širina je zadata u % */ height: 200px; padding: 30px; border: 20px solid #BCBCBC; overflow: auto; } let elem = document.querySelector('#elem'); let style = getComputedStyle(elem); console.log('width: ' + style.width); // prikazaće širinu u px

Pogledajte takođe

  • svojstvo cssText,
    koje masovno zadaje CSS stilove
Srpski
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Koristimo kolačiće za rad sajta, analitiku i personalizaciju. Obrada podataka se vrši u skladu sa Politikom privatnosti.
prihvati sve podesi odbij