HTML je značkovací jazyk, ve kterém by se pomocí značek měl vyznačovat význam jednotlivých částí textu. Z vlastní zkušenosti však víme, že dnes v HTML existuje několik atributů a elementů, které ovlivňují pouze grafický vzhled. Použitím těchto atributů a elementů sice můžeme získat graficky atraktivní stránku, má to však řadu nevýhod.
Text stránky je mnohdy špatně strukturován, protože jednotlivé elementy jsou využívány účelově k dosažení určitých grafických efektů. Druhou velkou nevýhodou je velká pracnost -- většina z vizuálních atributů musí být nastavována opakovaně u všech elementů.
Obě tyto nevýhody odstraňují kaskádové styly -- Cascading Style Sheets (CSS). Styly umožňují definovat způsob zobrazení (druh a velikost písma, barvu, zarovnání apod.) každého elementu na stránce. Styl však není přímo součástí textu stránky a tak může být zápis stránky přehlednější a dobře strukturovaný. Navíc styly umožňují definovat jednotný vzhled určitého elementu v celém dokumentu jedním zápisem -- nemusíme jej opakovat u každého elementu.
V tomto díle seriálu si popíšeme základní principy, na kterých jsou styly založeny. V dalších seriálech se podíváme na konkrétní vlastnosti stylů, které ovlivňují výsledné zobrazení stránky. Dnešní díl bude poměrně sucharský, ty další však budou doplněny o mnoho praktických ukázek.
H1 budou zobrazeny modře:
Tento jednoduchý styl se skládá z jednoho pravidla. Každé pravidlo má dvě části -- selektor (H1 { color: blue }
H1)
a deklaraci (color: blue). Deklarace se
skládá ze dvou částí -- z vlastnosti
(color) a z její hodnoty
(blue).
Selektor nám zajišťuje vazbu na odpovídající HTML element.
Jako selektor mohou být samozřejmě použity všechny elementy
HTML. Vlastností, které je u každého elementu možno použít,
je několik desítek. Na ty nejdůležitější z nich se podíváme
v dalších pokračováních našeho seriálu. Kompletní přehled
všech vlastností by zabral na stránkách CW mnoho místa.
Z tohoto důvodu jsme jej pro vás připravili pouze
v elektronické podobě na adrese
http://www.kosek.cz/clanky/web/css-ref.html.
První dva způsoby pracují se stylem uloženým v separátním souboru. Tento soubor se stylem lze k dokumentu připojit buď použitím elementu<HTML> <HEAD> <TITLE>Titulek stránky</TITLE> <LINK REL=STYLESHEET TYPE="text/css" HREF="http://style.com/super" TITLE="Super styl"> <STYLE TYPE="text/css"> @import url(http://style.com/zakladni); H1 { color: blue } </STYLE> </HEAD> <BODY> <H1>Nadpis je krásně modrý</H1> <P STYLE="color: green">Ekologický paragraf je zelený. </BODY> </HTML>
LINK s odpovídajícími atributy nebo pomocí
příkazu @import v samotné definici stylu.
Styl může být definován i přímo v dokumentu mezi tagy
<STYLE> a </STYLE>. Za
pozornost stojí atribut TYPE. Pomocí něj určujeme druh
použitého stylového jazyka. V budoucnu možná vzniknou i jiné
stylové jazyky a proto bychom měli tento atribut používat
k určení použitého druhu stylů. Pro styly CSS se používá MIME typ
text/css.
Poslední možností je definice stylu pouze pro jeden konkrétní
element. Toho lze dosáhnout použitím atributu STYLE, který
můžeme použít u všech elementů. Tento způsob však poněkud odporuje
samotné filosofii stylů -- míchá totiž obsah dokumentu s jeho
grafickou prezentací.
Aby byla zachována kompatibilita s prohlížeči, které nepodporují styly, je výhodné samotnou definici stylu uzavřít do komentáře. Starší prohlížeče ji pak ignorují:
<STYLE><!-- H1 { color: blue } --></STYLE>
Sloučit můžeme i několik deklarací -- ty se však oddělují středníkem:H1, H2, H3 { color: blue }
Některé vlastnosti lze nastavit společně pomocí jediné. Předchozí příklad můžeme zkráceně zapsat jakoH1 { font-weight: bold; font-size: 12pt; line-height: 14pt; font-family: sans-serif; font-variant: normal; font-style: normal }
H1 { font: bold 12pt/14pt sans-serif }
H1 nastavili
na modrou. Co se stane, když uvnitř elementu H1 použijeme
například element pro zvýraznění?
Pokud jsme stylem neurčili barvu elementu<H1>Tato kapitola <EM>je</EM> důležitější než ostatní</H1>
EM, slovo "je"
bude zobrazeno modře. Tuto barvu zdědí z nadřazeného elementu
(H1), který je modrý. Většina vlastností se dědí podobně
jako barva.
Pokud chceme nastavit nějakou vlastnost jako základní pro
celý dokument, můžeme použít deklaraci se selektorem BODY.
Takto definované vlastnosti zdědí ty elementy, které neobsahují ve stylu vlastní deklaraci použitých vlastností. Dokument tedy bude zobrazen černě na bílém podkladu.BODY { color: black; background-color: white }
BODY), určit jeho třídu
pomocí atributu CLASS. Na jméno třídy definované tímto
atributem se samozřejmě můžeme odkazovat i v definici stylu.
Dejme tomu, že naše stránka obsahuje poznámky, které jsou zapisovány
následujícím způsobem:
V definici stylu lze selektor doplnit o název třídy. Název třídy se od jména elementu odděluje tečkou:<DIV CLASS=footnote> Tady je text poznámky </DIV>
Jako selektor můžeme použít i samotný název třídy. Pak deklarace platí pro všechny elementy, kterým je atributemDIV.footnote { font-size: smaller; margin-left: 2em; margin-right: 2em }
CLASS přiřazena daná třída.
Použití tagu.footnote { font-size: smaller; margin-left: 2em; margin-right: 2em }
<DIV> způsobí zalomení textu a text
elementu pokračuje až na další řádce. Pokud chceme třídu přiřadit
nějakému textu, který je součástí odstavce, použijeme k jeho
značení element SPAN společně s atributem
CLASS. SPAN je nový element, který byl do HTML
přidán právě kvůli stylům.
ID. Ten
slouží k definici jedinečného jména elementu v rámci
dokumentu. Na takto pojmenované elementy jednak můžeme vytvářet odkazy
(v URL použijeme fragment) a jednak pro ně lze ve stylu uvést
zvláštní deklaraci.
První deklarace vyhoví všem elementům, jejichž atribut#L027 { letter-spacing: 1pt } H1#L027 { letter-spacing: 2pt }
ID je
nastaven na hodnotu L027. Např.:
Druhá deklarace stylu se použije pouze v případech, kdy je<P ID=L027>Odstavec prostrkaného textu
ID=L027 použito u elementu pro nadpis první úrovně.
POZOR: Vidíme, že pomocí této konstrukce můžeme nastavit
styl pro každý element zvlášť. Tomu bychom se však měli
vyhnout -- styl by měl být jednotný pro všechny elementy.
Pokud potřebujeme u nějakého elementu rozlišit několik jeho
různých významů, můžeme použít rozlišení pomocí tříd
(atribut CLASS).
H1
EM. Vyhovuje všem elementům EM, které jsou uvnitř
elementu H1. Uvedenou vlastnost můžeme elegantně použít pro
nastavení menšího písma pro položky hlouběji vnořených seznamů:
Tato deklarace nám neříká nic jiného než, že v číslovaných a nečíslovaných seznamech obsažených uvnitř položky jiného seznamu bude použita menší velikost písma.LI OL, LI UL { font-size: smaller }
V kontextových selektorech můžeme kromě elementů používat
i třídy (CLASS), názvy elementů (ID)
a jejich kombinace:
.preface BLOCKQUOTE { font-style: italic } #x81a CODE { color: yellow }
/* a */.
EM { color: red } /* všechna zvýraznění budou červená */
Pseudotřídy existují tři. Slouží pro nastavení barvy odkazů, navštívených odkazů a aktivovaných odkazů:
Pseudotřídy mohou být použity i v kontextových selektorech.A:link { color: blue } /* nenavštívený odkaz */ A:visited { color: red } /* navštívený odkaz */ A:active { color: yellow } /* aktivní odkaz */
Pomocí pseudoelementů můžeme dosáhnout velice mocných grafických efektů.
Bohužel je zatím většina prohlížečů nepodporuje. Pseudoelementy existují
dva first-line a first-letter
a slouží k nastavení vlastností první řádky resp.
prvního písmene textu v daném elementu. Následující deklarace nám
umožní používat odstavce třídy iniciala (<P
CLASS=iniciala>), které budou obsahovat iniciálu -- tj. jejich
první písmeno bude zvětšené a zasazené do textu.
P.iniciala:first-letter { font-size: 300%; float: left }