Slabikář JavaScriptu – práce s vkládanými styly
Formátování HTML stránek je nejjednodušší a nejefektivnější pomocí kaskádových stylů. Pomocí JavaScriptů lze tyto styly měnit a dosahovat tak jednoduše a průhledně zajímavých dynamických efektů. Následující článek vám ukáže, jak ovládat vkládané styly, které jsou obsaženy v hlavičce HTML dokumentu.
Kaskádovým stylem formátujeme většinou skupinu prvků. Mohou to být například všechny elementy stejného typu (častým příkladem jsou hypertextové odkazy) nebo podmnožina elementů, které mají stejnou hodnotu atributu CLASS nebo i konkrétní prvek identifikující se svým atributem ID. Pro každý CSS style sheet je použitelné rozhraní CSSStyleSheet interface, díky němuž je možné přistupovat do kolekce pravidel (cssRules) a pomocí definovaných metod s nimi manipulovat. Všechny CSS objekty v Document Object Model jsou takzvaně živé, což znamená, že jejich změna se okamžitě projeví v zobrazení aktuálních prvků, které jsou jimi formátovány.
Uveďme příklad stylů, na nichž budeme názorně demonstrovat použití dostupných metod a vlastností, ke kterým lze přistupovat JavaScriptem. V oddílu HEAD dokumentu budou zapsány styly:
|
Pokud budeme chtít k takto definovaným stylům přistupovat JavaScriptem, musíme si uvědomit, že zde máme kolekci dvou style sheets, jejíž jednotlivé prvky reprezentují elementy STYLE. Přistupujeme k nim například takto:
|
Jako každá kolekce i tato má svou vlastnost length, která má hodnotu 2 (tj. document.styleSheets.length je rovno 2). Každý style sheet obsahuje kolekci formátovacích pravidel cssRules, která jsou v něm definována. Každé pravidlo má vlastnost selectorText, která obsahuje název pravidla, a vlastnost cssText s jeho definicí. Ukažme si to konkrétně s odvoláním na uvedený příklad:
|
Tady nastávají první potíže při použití různých internetových prohlížečů. Hodnoty vlastností jsou nestejné, co se týká použití velkých a malých písmen (například td.dark vs. TD.dark), formátovací vlastnosti v cssText mohou být přehozené (tj. nejdříve color a potom teprve background-color), hodnota vlastnosti cssText nemusí být zakončena středníkem. S tím vším musí programátor počítat, když chce se styly manipulovat. Dalším problémem je, že MSIE nedodržuje standard a místo klíčového slova cssRules používá rules.
Další důležitou informací je, že všechny popsané vlastnosti jsou pouze pro čtení a není je možné měnit. Jak tedy dosáhnout změny stylu a tím i dynamického efektu na HTML stránce? Odpověď je jednoduchá: pravidlo je třeba smazat, vytvořit znovu a vložit ho do kolekce cssRules (respektive rules).
K tomu slouží metody deleteRule a insertRule. Metoda deleteRule má jediný parametr a tím je index pravidla v kolekci cssRules, které má být odstraněno. Metoda insertRule má parametry dva. Prvním je textová reprezentace celého pravidla (například td.light {background-color: silver; color: white;}), druhým parametrem je index v kolekci cssRules, kam se má pravidlo vložit.
Bohužel i zde jde – patrně z historických důvodů – MSIE svou vlastní cestou. Používá vlastnosti removeRule a addRule. Jediný parametr metody removeRule má stejný význam jako u metody deleteRule. V případě metody addRule je však situace jiná. Její první parametr má význam vlastnosti selectorText daného pravidla, druhý se shoduje s vlastností style.cssText. Je nutné přiznat, že definice atributů, jak je používá MSIE, je jednodušší pro práci na dynamických stránkách, neshoduje se však se standardem DOM CSS.
Příklad v tomto článku mění barvu pozadí a písma vybraných buněk tabulky. Byl vyzkoušen v MSIE 5.5 SP 2 a Netscape 7.0 Preview Release 1. V „živé“ podobě ho naleznete na samostatné stránce, zde si ukážeme jeho zdrojový kód:
|
Obecně lze říci, že dynamická změna stylů je velmi vhodná pro vytváření mnohých dynamických efektů na HTML stránkách.
Starší komentáře ke článku
Pokud máte zájem o starší komentáře k tomuto článku, naleznete je zde.
Mohlo by vás také zajímat
-
Vlastní web pomocí AI už může vytvořit opravdu každý
8. srpna 2024 -
Globální výpadek IT systémů: Může za to jediná aktualizace
19. července 2024 -
Nejlevnější VPS: To je nový Cloud Server Mini od ZonerCloud
4. června 2024
Nejnovější
-
Výkonný a kompaktní: ASOME Max Studio s výjimečným poměrem cena/výkon
11. listopadu 2024 -
Šokující data od Microsoftu: Kyberútoky rostou o stovky procent!
8. listopadu 2024 -
Chcete jedinečnou doménu? Objevte koncovky FOOD, MEME a MUSIC!
7. listopadu 2024 -
OpenAI představilo novou funkci ChatGPT Search
6. listopadu 2024