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://manes.vse.cz/cgi-bin/saczech/toASCII/~xkosj06/www/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 }