v CSS aneb třídy, identifikátory a složené deklarace
Příklad s podtitulem - Identifikátor - Složené deklarace - Skládání stylů - Pseudoelementy - Shrnující příklad
V HTML existuje několik podporovaných stylů textu (tagů), například nadpisy, seznamy, definice. Jejich zobrazení a formátování se dá ovlivnit pomocí CSS stylů, o tom byly minulé kapitoly. Aby se mohl potenciál kaskádových stylů rozvinout do krajnosti, mohou si tvůrci webových stránek definovat styly vlastní.
Příkladem vlastního stylu může být podtitul. (Nepatří do nadpisu a přece by měl být formátován odlišně než normální text.) Dá se formátovat přímo, ale aby byl ve všech dokumentech stejný, je dobré nadefinovat jej jako styl. HTML ale nemá pro podtitul žádný tag <podtitul>, a tak si musím pomoci jinak. Vytvořím třídu s názvem podtitul, ve stylopisu mu nadefinuji vlastnosti (třeba tučnost, zarovnání na střed) a u daného textu jenom řeknu, že patří do třídy podtitul.
Jak vypadá stylopis:
<style>
<!--
.podtitul { text-align: center;
font-weight: bold; text-decoration: overline} /* zarovnání na střed, tučné
písmo a nadtržení*/
-->
</style>
a potom v těle dokumentu to vypadá takhle:
<p class="podtitul">Text podtitulu</p>
A v prohlížeči potom takhle:
Text podtitulu
Text uvnitř "zaklasovaného" elementu se bude formátovat podle definice ve stylopisu. Ještě je třeba všimnout si tečky na začátku deklarace ve stylopisu. Ta vyjadřuje, že deklarace se nebude týkat html tagu, ale třídy.
Atribut class (třída) se může použít u libovolného elementu (tagu). Může se v dokumentu vyskytovat mnohokrát (na rozdíl od ID -- identifikátoru, o tom později). Potom se tento element zformátuje podle definice.
Takto je možné vytvořit si mnoho vlastních tříd -- stylů. Já mám například kromě podtitulu nadeklarovaný formát poznámek, odkazových lišt a důležitějších odstavců. Je možné toho vymyslet desítky, to se dočtete v kapitole o strukturovaném textu.
Pro jednoznačný popis nějakého elementu (zejména pro potřeby skriptů) existuje univerzální atribut ID. I jemu se může ve stylopisu přiřadit nějaká deklarace, ale na rozdíl od třídy nezačíná tečkou, ale dvojkřížkem. V těle dokumentu by se element s jedním identifikátorem měl vyskytovat jenom jednou.
Kdybych v předchozím příkladu použil identifikátoru namísto třídy, deklarace by vypadala takhle:
#podtitul { text-align: center; font-weight: bold;
text-decoration: overline}
a v těle by se odstavci přiřadila identifikace atributem id:
<p id="podtitul">Text
podtitulu</p>
Osobně identifikátory pro formátování nepoužívám, stačí mi třídy.
Stylopisy umožňují nadeklarovat vlastnosti pro více elementů najednou. Například deklarace
H1, H2, H3 {color: green}
obarví všechny odstavce první, druhé i třetí úrovně na zeleno. Hromadnou deklaraci používám, pokud zadávám mnoho stejných vlastností pro mnoho elementů. Důležitá je čárka mezi selektory! Kdyby tam nebyla, šlo by o něco jiného, totiž o kontextový selektor.
Vysvětlím příkladem:
H3 A {font-style: italic}
Tato deklarace by udělala kurzívou všechny odkazy uvnitř nadpisů třetí úrovně (elementy A uvnitř elementu H3). Odkazy v obyčejných odstavcích to nijak neovlivní, stejně tak obyčejný text trojkového nadpisu. Osobně tuto vlastnost považuji za nejfantastičtější a výborně použitelnou vlastnost CSS. Použil jsem ji v příkladu o různých barvách odkazů.
Díky CSS se na jeden element může navrstvit mnoho různých deklarací
(proto styly kaskádové), někdy i protichůdných. Jak se rozhodne,
která deklarace převládne? Zpravidla ta poslední. Když chci, aby nějaká dřívější
deklarace převládla, napíšu do deklarace řetězec "! important
".
Taková deklarace potom nebude přehlušena žádnou pozdější. (Tuto
vlastnost doporučuji používat s rozvahou, protože způsobuje zmatek při
pozdějším ladění designu.)
Ve specifikaci CSS1 se vyskytují pseudoelementy :first-line a :first-letter. Znamenají první řádek a první písmeno. Například zápis:
p:first-line {color: blue}
p:first-line {font-size: 200%}
by měl způsobit, že odstavce budou mít první řádek modrý a první písmeno dvakrát větší.
Ale ve většině prohlížečů to nefunguje. Hodně lidí nad tím strávilo x hodin ve snaze to rozchodit. Je to marné.
Z prohlížečů to podporují pouze Mozilla 5 a Internet Explorer 5.5 (nikoliv IE 5.0)
Ve stylopisu (v hlavičce či v externím souboru) se mohou vyskytovat i takovéhle věci:
<style>
#prvniodstavec {text-ident: 20 px}
A:visited {color: teal}
A:link {color: navy}
a:hover {color: red}
.velke A {font-weight: bold}
.zalozka {font-style: oblique}
.zalozka A:visited {color: navy ! important}
H1, H2 {color: #33ff66; font-variant: small-caps}
H2 {font-size: 18pt}
</style>
Doufám, že význam je zřejmý. Všechno to funguje. Důležité je v příkladu snad jen to, že se může jeden element deklarovat vícekrát a že kontextová deklarace se může kombinovat s třídami a pseudotřídami.
Ve jménech tříd a identifikátorů se vyvarujte používání podtržítka _ (a raději i češtiny a jiných pochybných znaků). Internet Explorer 5 podtržítko v názvu třídy nebo ID snese a správně zobrazí, žádný jiný prohlížeč ale ne!!!
Další: Délkové jednotky v CSS,
Předchozí: CSS prakticky nebo přehled vlastností CSS
Viz též: strukturování textu, úvod do CSS, Dynamické HTML
Příklad: různé barvy odkazů
Obsah
Hledání
Základní kurs
Editory
HTML tipy
Provoz webu
CSS styly
Jak psát web:
http://dusan.pc-slany.cz/internet/
Píše Yuhů: autorova stránka, mail: dusan@pc-slany.cz
Poslední aktualizace 27.07.2001