197 of 264 menu

Funkce getComputedStyle

Funkce getComputedStyle umožňuje získat hodnotu jakékoli CSS vlastnosti elementu, dokonce i z CSS souboru.

Syntaxe

let objekt = getComputedStyle(prvek);

Podrobnosti

Jak to funguje (pozor: ne tak, jak očekáváme): parametrem funkce přijímá element, a vrací objekt, který obsahuje všechny CSS vlastnosti předaného elementu. Pojďme tento objekt uložit do proměnné style. Název je libovolný, je to jen proměnná - jak ji vymyslíme, tak se budeme odkazovat:

let elem = document.querySelector('#elem'); let style = getComputedStyle(elem); // v style leží CSS vlastnosti

Pojďme vypsat, například, šířku. To se dělá takto - style.width:

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

Chcete-li vypsat, například, levý padding - uděláme takto - style.paddingLeft:

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

V následujícím příkladu vypíšeme všechny nás zajímající CSS vlastnosti pro náš 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); // vypíše '30px' console.log('borderTopWidth: ' + style.borderTopWidth); // vypíše '20px' console.log('borderTopStyle: ' + style.borderTopStyle); // vypíše 'solid'

Nepřesnost getComputedStyle

Někdy funkce getComputedStyle pracuje ne zcela korektně se šířkou a výškou. To souvisí s tím, že padding a okraj rozšiřují blok. V následujícím příkladu má blok nastavenou šířku 200px, a také okraj a border. Skutečná šířka bloku je 300px, ale getComputedStyle stejně vypíše 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); // vypíše '200px' console.log('height: ' + style.height); // vypíše '200px'

To znamená: ukazuje se, že getComputedStyle ignoruje rozšíření bloku a ukazuje jeho rozměry tak, jako by toto rozšíření nebylo. Ale to ještě není všechno: také záleží na přítomnosti nebo nepřítomnosti posuvníku - některé prohlížeče odečítají šířku posuvníku od šířky vypočtené pomocí getComputedStyle, a některé neodečítají. Zkrátka tady vůbec vše není cross-browser a je lepší getComputedStyle pro určení šířky a výšky nepoužívat, a používat metriky, které se naučíme o něco dále.

Vypočtené hodnoty

Existuje ještě jeden nuance: pokud je šířka nastavena v % - tak po práci getComputedStyle uvidíme ji v px. To znamená, že v podstatě nedostáváme nastavenou šířku, ale vypočtenou. Podívejte se na následující příklad:

<div id="elem">text</div> #elem { width: 30%; /* šířka nastavena v % */ height: 200px; padding: 30px; border: 20px solid #BCBCBC; overflow: auto; } let elem = document.querySelector('#elem'); let style = getComputedStyle(elem); console.log('width: ' + style.width); // vypíše šířku v px

Viz také

  • vlastnost cssText,
    které hromadně nastavuje CSS styly
Čeština
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяDanskDeutschΕλληνικά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
Používáme soubory cookie pro fungování webu, analýzu a personalizaci. Zpracování údajů probíhá v souladu s Zásadami ochrany osobních údajů.
přijmout vše přizpůsobit odmítnout