
Zjištění výsledného CSS v JavaScriptu
Jak v JavaScriptu zjistit výslednou hodnotu libovolné CSS vlastnosti určitého elementu.
V některých případech je potřeba v JS spočítat výsledné hodnoty CSS vlastností nějakého elementu. To se může hodit třeba při tvorbě universálního JS + CSS řešení, kdy nelze spoléhat na výchozí CSS, ale zase je nemůžeme natvrdo přenastavit.
Zatímco pro nastavování CSS vlastností z JavaScriptu stačí jen z názvů CSS vlastností vhodit spojovník a následující písmeno zvětšit:
element.style.cssVlastnost = "její hodnota";
element.style.backgroundColor = "red";
Nebo veškeré CSS zapsat do cssTextu.
element.style.cssText = "
css-vlastnost: 'její hodnota';
background-color: 'red'
";
Při čtení stylu skriptem je to komplikovanější.
<style>
div {color: red}
<style>
<div></div>
<script>
alert(
document.getElementsByTagName("div")[0].style.color
);
</script>
Tento kód nevyhodí v alertu hodnotu red, jak by se mohlo očekávat. Ukázka.
Řešení
Co tedy s tím? Existují vlastnosti getComputedStyle a do IE 8 currentStyle. Ve starších IE je ještě drobná odlišnost v tom, že potřebuje název CSS vlastnosti v camelCase a ne se-spojovníkem.
Funkce sjednocující prohlížeče může vypadat následovně:
function getStyle(oElm){
return window.getComputedStyle ? getComputedStyle(oElm, "") : oElm.currentStyle;
}
Použití
var div = document.getElementsByTagName("div")[0];
var sktuecnyRamecek = getStyle(div).border;
Co si myslíte o tomto článku?
Diskuse
Související články
CSS item-pack: balance – vyvážené rozložení flex položek
Vlastnost item-pack: balance rozděluje flex položky rovnoměrně mezi řádky, podobně jako text-wrap: balance vyvažuje řádky textu.
CSS Container Queries – responsivní komponenty
Jak pomocí @container, container-type a container-name vytvářet komponenty, které se přizpůsobí velikosti svého rodiče místo viewportu.
CSS Anchor Positioning – posicování elementů relativně k jiným
Jak pomocí anchor-name, position-anchor a funkce anchor() posicovat elementy relativně k jiným bez JavaScriptu.
Centrování na webových stránkách
Moderní způsoby vertikálního i horizontálního centrování v CSS. Flexbox, Grid, margin auto a další techniky.