Interval.cz
Umφme p°i°azovat styly znaΦkßm HTML

Prvnφ verze kaskßdov²ch styl∙ nabφzφ vesm∞s primitivnφ mo₧nosti p°i°azenφ styl∙ znaΦkßm webovΘ strßnky. S p°φchodem druhΘ verze je mo₧nΘ aplikovat styly nap°φklad na sousednφ znaΦky Φi na zßklad∞ hodnot jejich atribut∙. Jak vypadajφ takovΘ zßpisy a jak jim rozumφ vybranΘ prohlφ₧eΦe?

Zßkladnφ zp∙soby p°i°azenφ stylu

NejjednoduÜÜφm zp∙sobem p°i°azenφ stylu k oznaΦkovanΘ Φßsti dokumentu je uvedenφ jmΘna p°φsluÜnΘ znaΦky, tj. nap°φklad definice stylu odstavce bude vymezena p {...}. Podobn∞ lze p°i°adit styl znaΦkßm s identifikßtorem (obsahujφ atribut id) Φi spadajφcφ do n∞jakΘ t°φdy (obsahujφ atribut class>), tj. ke znaΦce <p id="odstavec01" class="odstavce"> lze stylovΘ vlastnosti p°i°adit takΘ pomocφ nßsledujφcφch definic:

#odstavec01 {...}
.odstavce {...}

Z hlediska struktury webovΘho dokumentu lze p°i°azenφ stylu ke znaΦkßm omezit na zßklad∞ toho, zda jsou tyto znaΦky obsa₧eny vájinΘ znaΦce, podle nßsledujφcφ definice budou Φervenß jenom ta zv²razn∞nφ, kterß jsou obsa₧ena váodstavcφch:

p em {color: red}

V∞tÜφ flexibilitu v p°i°azovßnφ styl∙ na zßklad∞ struktury dokumentu vÜak CSS 1 nenabφzφ.

Hv∞zdiΦka na scΘn∞

Hlavnφm p°φnosem druhΘ verze CSS je zßstupn² znak * nahrazujφcφ jak libovoln² element (tj. znaΦku) v dokumentu, tak libovoln² (jeden a vφce) poΦet ·rovnφ element∙ (tj. hloubku zano°enφ jednΘ znaΦky uvnit° jin²ch znaΦek). Podle zadßnφ:

body * em {color: red}

budou Φervenß jenom ta zv²razn∞nφ, kterß nejsou p°φmo obsa₧ena v t∞le webovΘ strßnky (ale jsou nap°φklad v n∞jakΘm odstavci):

<body>
<em>Nebude Φerven∞</em>
<p><em>Bude Φerven∞</em></p>
</body>

Pokud bychom naopak cht∞li aplikovat styl pouze na p°φmΘ potomky, lze to za°φdit symbolem >:

body > em {color: red}
a tedy:
<body>
<em>Bude Φerven∞</em>
<p><em>Nebude Φerven∞</em></p>
</body>

Jß na brßchu...

Krom∞ posuzovßnφ zßvislosti rodiΦ/potomek (tj. vno°enosti znaΦek do sebe), lze v CSS2 pomocφ symbolu + up°es≥ovat takΘ sourozeneck² vztah, tj. zda znaΦce, kterΘ chceme p°i°adit styl, p°edchßzφ jinß znaΦka (Φi vφcero znaΦek):

h1 + p {text-indent: 2em}

Podle tΘto definice bude prvnφ °ßdek odsazen pouze u odstavce, kter² bezprost°edn∞ nßsleduje za nadpisem prvnφ ·rovn∞:

<body>
<h1>Nadpis</h1>
<p>Odstavec s odsazen²m °ßdkem.</p>
<p>V tomto ani v p°φpadn²ch dalÜφch odstavcφch ji₧ °ßdek odsazen nebude.</p>
</body>

Specißln∞ pro prvnφ a poslednφ elementy v °ad∞ sourozeneck²ch znaΦek existujφ up°es≥ujφcφ pseudot°φdy first-child a last-child, kterΘ lze pou₧φt nßsledujφcφm zp∙sobem:

h2:first-child {margin-top: 2em}
body > *:last-child {margin-bottom: 3em}

P°ed nadpisem druhΘ ·rovn∞ bude zv∞tÜeno odsazenφ pouze v p°φpad∞, ₧e jej nep°edchßzφ n∞jakß znaΦka na stejnΘ ·rovni. Zßrove≥ bude zv∞tÜeno odsazenφ za poslednφ znaΦkou na strßnce (a¥ u₧ je tato znaΦka jakßkoli). Pseudot°φdu last-child sice specifikace CSS 2 v∙bec nedefinuje, v Mozille p°esto funguje.

Kdy₧ majφ atributy co °φci

Dßle lze pomocφ CSS 2 omezit p°i°azenφ stylu ke znaΦce na zßklad∞ atribut∙ tΘto znaΦky; vyhodnocovßnφ atribut∙ se zapisuje do hranat²ch zßvorek:

a[name] {color: green}
a[target="_blank"] {color: blue}

Takto budou veÜkerΘ kotvy, kterΘ figurujφ jako nßv∞Ütφ, vypsßny zelen∞ (bez ohledu na identifikßtor nßv∞Ütφ, tj. hodnotu atributu name) a veÜkerΘ odkazy, kterΘ otevφrajφ novΘ okno, mod°e (zde tedy ji₧ pouze v p°φpad∞, ₧e hodnota atributu target je _blank).

Pokud je d∙le₧it² pouze atribut znaΦky a na znaΦce samotnΘ nezßle₧φ, lze samoz°ejm∞ pou₧φt hv∞zdiΦku jako zßstupn² symbol, p°iΦem₧ specifikace ji povoluje vynechat, zßpis *[lang="cs"] je tedy ekvivalentnφ s [lang="cs"]. VÜimn∞me si, ₧e tφmto zp∙sobem je mo₧nΘ nahradit p°i°azenφ styl∙ podle identifikßtoru Φi t°φdy, jak je p°edstaveno v prvnφm p°φklad∞ tohoto Φlßnku:

[id="odstavec01"] {...}
[class="odstavce"] {...}

V praxi je vÜak kv∙li kompatibilit∞ z°ejm∞ vhodn∞jÜφ zp∙sob podle CSS 1.

KoneΦn∞ dodejme, ₧e vÜechny v²Üe uvedenΘ techniky p°i°azovßnφ styl∙ lze vÜelijak kombinovat pro dosa₧enφ po₧adovan²ch v²sledk∙.

A co na to prohlφ₧eΦe?

V²sledky zkouÜenφ popsan²ch p°i°azovacφch technik v r∙zn²ch prohlφ₧eΦφch jsou pom∞rn∞ jasnΘ. Mozilla v²Üe popsanß pravidla zvlßdß beze zbytku (testovßno na verzi 1.1), Opera (verze 6.05) a₧ na pseudot°φdy takΘ. Kamenem ·razu je Internet Explorer, kter² ₧ßdnou z p°i°azovacφch technik CSS2 neumφ ani v poslednφ verzi 6.0.



Ji°φ PolßΦek (11.11. 2002)

Redakce Interval.cz |  Inzerce na Interval.cz |  Hledßme novΘ autory ISSN 1212-8651 
 ⌐ Zoner software, s.r.o., vÜechna prßva vyhrazena, tento server dodr₧uje prßvnφ p°edpisy o ochran∞ osobnφch ·daj∙.