CSS a JavaScript [8.časť seriálu o CSS]

Kaskádové štýly, alebo CSS majú výraznú previazanosť s HTML čo umožňuje tvorcovi web stránky výrazným spôsobom podriadiť formátovanie celej stránky a CSS plne využiť ku svojmu prospechu. Ako si pri tomto dokážeme pomôcť JavaScriptom si ukážeme v nasledovnej časti nášho seriálu.


Pomocou CSS, ako vieme, je jednoduché a praktické ovládanie HTML tagov a ich formátovanie, ovládanie formátovania textu, pozície, a celkového aranžovania HTML stránky. Tieto pokusy už máme za sebou z predchádzajúcich častí ale samozrejme budeme sa im venovať aj v budúcnosti. Vyčerpať totiž tématiku Kaskádových štýlov je veľmi ťažké, hlavne v tejto dobe keď prichádza napríklad špecifikácia CSS2, alebo začleňovanie CSS do XML, nového formátovacieho (značkového) jazyka. Tým naberajú Kaskádové štýly nový rozmer a určite sa im je potrbné venovať.

Dnes by sme sa však mali zamerať na spoluprácu CSS a JavaScriptu a hlavne otázkou sprístupnenia vlastností CSS tomuto populárnemu scriptovaciemu jazyku.

Na začiatok by nebolo zlé podotknúť, že Microsoft Internet Explorer a Netscape Communicator majú odlišnú implementáciu "Document Object Model" - (DOM), z čoho vyplýva nutnosť postupovať pri zostavovaní výsledného kódu dvoma spôsobmi. Spôsobí nám to síce isté časové zdržanie, avšak inej možnosti v súčasnosti nemáme.

Najskôr si pripravme HTML dokument na prácu so štýlmi. Medzi tagy HEAD vložíme nasledovnú dekláraciu štýlu, id="moj_styl".

<style id="moj_styl" type="text/css">
(Preddefinicia CSS)
</style>

JavaScript v tomto prípade použijeme ako akýsi most na prenesenie CSS formátovania na náš HTML dokument. Ako si ukážeme v nasledovnom príklade, rôzna implentácia DOMu v tomto prípade nabude pre nás prekážkou, pretože si kód upravíme pre aplikovanie v oboch spomínaných browseroch, teda v MS IE aj v Netscape.

<script language="javascript1.2">
if (document.all) {
// Kaskádový štýl podporovaný MS Internet explorerom ...
} else if (document.layers) {
// Kaskádový štýl podporovaný Netscape Communikátorom ...
}
</script>

Teraz si skúsme pomocou JavaScriptu aplikovať túto "preddefiníciu" na ostro a deklarovať formátovanie napríklad tagu <p>. Všetky odseky formátované pomocou tagu <p> si vyfarbime na modro.

<script language="JavaScript1.2">
if (document.all) {
document.styleSheets["moj_styl"].addRule
("P", "color: } else if (document.layers) {
document.tags.p.color="}
</script>

Ako sami vidíte rozdielna deklarácia CSS pre MS IE a Netscape Communicator je pomocou JavaScriptu o niečo zložitejšia, ale efekt máte zaručený. V tomto prípade sa nám nemôže stať, že stránka sa inak zobrazí v IE a inak v NC. Chce to však trochu viac trpezlivosti a práce, ale určite to bude stáť za to.

Developer,
Stiahnuté z Developer.sk