Změna stylů JavaScriptem
Jak JavaScriptem nastavovat CSS pro změnu vzhledu jednotlivých elementů.
Ke stylu jednotlivých elementů je v JS přístup prostřednictvím vlastnosti style
.
var element = document.getElementById("idecko");
element.style.color = "red";
Pro CSS vlastnosti s pomlčkou (spojovníkem) se potom spojovník vypustí a následující písmeno po něm zvětší (příklad pro vlastnost background-color
):
element.style.backgroundColor = "red";
CSS prefixy
Rovněž prefixované vlastnosti jdou JavaScriptem měnit.
Logika je stejná – vypustit spojovník a následující písmeno zvětšit. Vlastnost -webkit-animation
tak bude WebkitAanimation
:
element.style.WebkitAnimation = "animace";
Odlišná je situace v IE, kde je první písmeno malé:
element.style.msTransform = "…";
CSS text
V případě, že je potřeba u jednoho elementu měnit více vlastností, je možné nastavovat vlastnost po vlastnosti:
element.style.color = "red";
element.style.padding = "1em";
Nebo použít cssText
, kam se píše normální CSS:
element.style.cssText = "color: red; padding: 1em";
veinjs
Elegantnější nastavování vlastností nabízí například knihovna veinjs.
vein.inject('h1.myHeader', {'color': 'red', 'font-size': '3em'});
- veinjs – elegantní nastavování CSS v JavaScriptu
Podobný zápis umí i funkce css()
v jQuery.
Změna CSS třídy
Pokud se nastavovaný vzhled nějak nezjišťuje a nepočítá skriptem, nabízí se v JS pouze měnit CSS třídy a příslušné styly mít v CSS souboru.
- Přepínání tříd v JS – jak JavaScriptem měnit třídy
Například:
element.className += " nazevTridy";
A v CSS:
.nazevTridy {
/* styly */;
}
Připojení CSS
Má-li se skriptem vypočítaný styl aplikovat pro velké množství elementů, není potřeba procházet všechny elementy a nastavovat jim vlastnosti/třídy, ale jde skriptem vytvořit přímo CSS a připojit ho do stránky:
var css = "p {color: red}";
var styl = document.createElement("style");
styl.innerHTML = css;
document.getElementsByTagName("head")[0].appendChild(styl);
Pro IE 8 a starší i nové prohlížeče zároveň je funkční následující postup:
var css = "p {color: red}";
var div = document.createElement('div');
div.innerHTML = '<span> </span><style>' + css + '</style>';
document.getElementsByTagName('head')[0].appendChild(div.childNodes[1]);
Tento postup jde použít třeba pro vyhledávání pomocí CSS selektorů.
Přečtení hodnoty
Vlastnost style
nejde používat pro zjištění stylu:
<style>
p {color: red}
</style>
Odstavec bude červený, ale v jeho style.color
nebude nic:
console.log(odstavec.style.color); // nic
Zjišťovat skutečný styl jde přes getComputedStyle
:
Komentáře