Vlastní styly

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 - Nejisté znaky

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říklad: podtitul

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). Symbolicky:

<tag class="jméno_třídy">

Element se stejnou class se v dokumentu může 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.

Identifikátor

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>

Identifikátor id se z hlediska CSS chová stejně jako třída class. Rozdíly jsou právě jen ve skriptech a v parsování dokumentu. Osobně identifikátory pro formátování nepoužívám, stačí mi třídy.

Složené deklarace

Hromadná deklarace

Stylopisy umožňují nadeklarovat vlastnosti pro více elementů najednou. Například deklarace

H1, H2, H3    {color: green}

obarví všechny nadpisy 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.

Kontextová deklarace

Vysvětlím příkladem:

H3    {font-style: italic}

Tato deklarace by udělala kurzívou všechny odkazy uvnitř nadpisů třetí úrovně (elementy A uvnitř elementu H3). 

<h3>Obyčejný text nadpisu s <a>odkazem kurzívou</a></h3>
<p>Obyčejný odstavec s <a>obyčejným odkazem</a></p>

Odkazy v obyčejných odstavcích to nijak neovlivní, stejně tak obyčejný text trojkového nadpisu. 

Zápisy selektorů kontextového zápisu jsou odděleny pouze mezerou. 

Osobně tuto vlastnost považuji za nejfantastičtější a výborně použitelnou vlastnost CSS. Použil jsem ji třeba v příkladu o různých barvách odkazů.

Skládání stylů

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.)

Pseudoelementy

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, NN 6 a Internet Explorer 5.5 (nikoliv IE 5.0)

Shrnující příklad

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.

Nejisté znaky

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ů, ale mínus je v pohodě). Internet Explorer 5 podtržítko v názvu třídy nebo ID snese a správně zobrazí, žádný jiný prohlížeč ale ne!!!

Název třídy ani identifikátoru by podle specifikace neměl začínat číslicí, Internet Exploreru 6 se to opravdu nelíbí. 

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ů

Píše Yuhů
dusan@pc-slany.cz
Jak psát web O tvorbě, údržbě a zlepšování internetových stránek.

Základy HTML CSS FrontPage JavaScript

Hledání


Rozšířené


Jak psát web: http://dusan.pc-slany.cz/internet/

Píše Yuhů: autorova stránka, mail: dusan@pc-slany.cz

Poslední aktualizace 24.03.2002