⊗jsPmStCl 382 of 505 menu

Stylování pomocí CSS tříd v JavaScriptu

V předchozí lekci jsme se naučili měnit CSS styly prvků prostřednictvím změny atributu style. Často to není příliš dobrý nápad. Problém je v tom, že pokud rozptýlíme CSS styly do JavaScriptového kódu, bude následně problematické změnit design webu, protože bude nutné prohledávat JavaScriptový kód a hledat v něm zakotvené styly.

Pro další údržbu bude pohodlnější přidávat nebo odebírat prvkům CSS třídy, čímž je stylujeme požadovaným způsobem.

Podívejme se na příklad. Předpokládejme, že máme několik odstavců:

<p>text1</p> <p>text2</p> <p>text3</p>

Udělejme to, aby po kliknutí na libovolný odstavec byl tento odstavec obarven nějakou barvou, například zelenou. K tomu v CSS souboru vytvoříme speciální třídu pro barvení odstavců:

.colored { color: green; }

Výhoda použití třídy spočívá v tom, že nyní lze snadno změnit požadovanou barvu - stačí pouze provést změnu v CSS souboru, bez zásahu do JavaScriptového kódu. To bude obzvláště výhodné v případě, že JavaScriptový kód píšete vy, a následně ho bude stylovat někdo jiný (pravděpodobně méně kvalifikovaná osoba, která umí pracovat pouze s CSS).

Takže nyní, po zavedení třídy, po kliknutí na libovolný odstavec lze změnit jeho barvu jednoduše přidáním naší třídy:

let elems = document.querySelectorAll('p'); for (let elem of elems) { elem.addEventListener('click', function() { this.classList.add('colored'); // přidáme odstavci třídu }); }

Vysvětlete, proč jsem pro název třídy zvolil slovo colored, a ne slovo green, které explicitně odkazuje na požadovanou barvu.

Je dán odstavec. Jsou dány tlačítka 'přeškrtnout', 'zvýraznit tučně', 'obarvit na červeno'. Po stisknutí každého tlačítka ať se s odstavcem provede daná akce (například se obarví na červeno).

Č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