Kaskádové štýly (Cascading Style Sheets CSS)
Ak váš web začne naberať na mohutnosti, počet stránok sa vyjadruje v
desiatkach či stovkách zistíte, že html začina byť dosť nepraktické. A to
nehovoríme o tom, keď sa rozhodnete zmeniť "vizáž" vašich stránok. Nekonečné
prepisovanie formátu odsekov, zoznamov a nadpisov vám dá poriadne zabrať. Ale
naľakajte sa, na pomoc prichádzajú kaskádové štýly.
Pôvodná verzia HTML predpokladala formátovanie textu až pri zobrazení stránky
pomocou HTML značiek ako napr.: H1, P, FONT atď. Pomocou CSS si v úvode stránky,
alebo v externom súbore vieme vytvoriť niekoľko štýlov, definujeme ich atribúty
a v ďalšom texte sa na ne odkazujeme. Celý dizajn webu, (formátovanie,
zarovnanie, farby, ..) môže byť uložený v jednom externom súbore.
Štýly vznikli niekedy koncom roku 1996 (CSS1) a rozšírenia v podobe CSS2 sa
dočkali v máji 1998, takže dnešné prehliadače by nemali mať žiaden problém s ich
interpretáciou. Momentálne (apríl 2004) je vo vývoji verzia CSS3. Kompletnú špecifikáciu CSS2 podľa W3C nájdete na serveri rayman.
Poďme sa bližšie pozrieť na praktické použitie štýlov. Štýly sa dajú v zásade
použiť dvoma spôsobmi. Je možné modifikovať už existujúce vlastnosti štýlov
(napr. P, H1 ...) alebo vytvárať štýly úplne nové. Pri tvorbe úplne nového
štýlu, je potrebné definovať všetky vlastnosti, čo môže byť dosť náročné. V
praxi sa preto častejšie používa spôsob, keď "dodefinujeme" nové vlastnosti už
existujúcim štýlom.
Štýl môžeme definovať niekoľkými spôsobmi.
- priamo, v texte zdojového súboru pri formátovacej značke
- pomocou "štýlopisu" v hlavičke stránky, štýlopis je zoznam štýlov, ktoré
sa použijú v danom dokumente
- pomocou "štýlopisu" v externom súbore, na ktorý sa v konkrétnom dokumente
odvolávame pomocou značky LINK (príp. cez @import)
Predstavme si napr., že chceme definovať štýl nadpisu úrovne 3 (teda zmeniť
vlastnosť H3). Urobíme to troma spôsobmi:
Definícia priamo pri značke v dokumente. Definujeme štýl nadpisu H3 tak, aby
bol nadpis modrou farbou.
časť zdrojového kódu stránky |
výsledok v prehliadači |
<H3 style="color: #0000FF">Nadpis
3</H3> |
Nadpis 3 |
Definícia v štylopise v hlavičke dokumentu. Definujme štýl nadpisu H3
nasledovne: veľkosť 20 pixelov, farba zelená.
časť zdrojového kódu stránky |
výsledok v prehliadači |
... <head> <style type="text/css"> H3
{color: "#00FF00"; font-size:
20px} </style> </head> <body> ... <H3>Nadpis
3</H3> ... </body> ... |
Nadpis
3 |
Definícia v štýlopise v externom súbore. Definujme štýl nadpisu H3
nasledovne: veľkosť 30 pixelov, farba červená, zarovnanie do stredu.
časť zdrojového kódu stránky/externého súboru |
výsledok v prehliadači |
obsah súboru styl.css:
h3 {
color: #FF0000; font-size:
30px; text-align: Center
}
|
|
obsah html dokumentu:
<head> <style
type="text/css"> @import
"styl.css" </style> </head> <body> ... <H3>Nadpis
3</H3> ... </body> ... |
Nadpis
3 |
alebo
<head> <link rel="stylesheet"
type="text/css"
href="styl.css"> </head> <body> ... <H3>Nadpis
3</H3> ... </body> ... |
Nadpis
3 |
No, a čo by sa stalo, keby sme všetky tri definície zlúčil dohromady?
časť zdrojového kódu stránky/externého súboru |
výsledok v prehliadači |
obsah súboru styl.css:
h3 {
color: #FF0000; font-size:
30px; text-align: Center
}
|
|
obsah html dokumentu:
<head> <style
type="text/css"> @import "styl.css"; H3 {color: "#00FF00";
font-size:
20px} </style> </head> <body> ... <H3
style="color: #0000FF">Nadpis
3</H3> ... </body> ... |
Nadpis
3 |
Takže nadpis je zarovnaný v strede (podľa styl.css), má veľkosť 20 (podľa
definície v hlavičke) a je modrý (podľa defínície pri značke H3). Inak povedané,
ak dôjde ku "kolízii" štýlov, aplikuje sa ten, ktorý bol implementovaný ako
posledný (alebo ten, ktorý je najbližšie k textu).
Pri definovaní vlastností štýlov môžeme postupovať aj spôsobom, kedy
vytvoríme novú triedu (class). Trieda je v podstate pomenovanie vlastnosti,
alebo súhrnu vlastností, na ktoré sa môžeme potom odkazovať v značke v html
dokumente.
Ak by sme potrebovali v našom webe používať konkrétnu farbu pri viacerých
objektoch, môžeme to spraviť nasledovne:
časť zdrojového kódu stránky |
výsledok v prehliadači |
obsah html dokumentu:
<head> <style
type="text/css"> .farba1 {color: #FF0000} .farba2 {color:
#00FF00} .farba3 {background-color:
#0000FF} </style> </head> <body> ... <H3
class="farba2">Nadpis 3</H3> <p class="farba1">text
odseku</p> <TABLE> <TR> <TD
CLASS="farba3"><p
class="farba1">ahoj</p></TD> </TR> </TABLE>
... </body> ... |
Nadpis 3
text
odseku
|
Ukážme si ešte niektoré vlastnosti štýlov:
Relatívne jednotky:
- em: výška aktuálneho písma (je rovnaká, ako šírka písmena
"M")
- ex: výška písmena "x"
- px: pixel/bod obrazovky
Absolútne jednotky:
- in: palce (inches), 1 palec je 2.54 centimetra
- cm: centimetre
- mm: millimetre
- pt: body (points), použiteľné v CSS2, 1 pt je 1/72
palca.
- pc: picas, 1 pica je 12 bodo (points).
Vlastnosti písma:
- Font-family: názov písma (, názov písma 2, ..), generické meno
(predstavuje názov pre rodinu písiem):
serif | sans-serif | cursive |
fantasy | monospace / pätkové písmo | bezpätkové písmo | ozdobné písmo,
kurzíva | ornamentálne písmo | neproporcionálne písmo
- Font-style: štýl písma:
normal | italic | oblique / normálne,
šikmé, sklonené
- Font-variant: variant písma:
normal | small-caps / normálne |
kapitálky
- Font-weight: tučnosť písma:
normal | bold | bolder |
lighter | 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900
- Font-size: veľkosť písma:
absolútna (xx-small | x-small | small
| medium | large | x-large | xx-large)
relatívna (larger | smaller)
v
percentách voči okolitému písmu
výška (v jednotkách ptm, em )
Farby textu a pozadia:
- color: farba textu
#rgf - od 0 do F
#rrggbb - od 00 do
FF
rgb(r,g,b) - od 0 do 255
rgb(r%, g%, b%) - od 0% do 100%
- background-color: farba pozadia:
color | transparent / farba |
priehľadná,
#rgf - od 0 do F
#rrggbb - od 00 do FF
rgb(r,g,b) -
od 0 do 255
rgb(r%, g%, b%) - od 0% do 100%
- background-image: obrázok na pozadí:
URL("adresa") | none /
adresa obrázku | bez obrázku v pozadí
- background-repeat: opakovanie obrázku v pozadí
repeat | repeat-x
| repeat-y | no-repeat / opakovať obrázok v pozadí v oboch smeroch| len
horizontálne | len vertikálne | neopakovať
- background-attachment: pripevnenie pozadia na pozadie
scroll |
fixed / skrolujúce pozadie | fixované pozadie
- background-position: presné umiestnenie obrázku na
pozadí
percentá x% y%, napr. 10% 20% znamená, že bod obrázku vzdialený od
jeho ľavého horného rohu 10% zo šírky obrázku v smere x a 20% z výšky
obrázku v smere y bude vzdialený od ľavého horného rohu oblasti 10% zo
šírky oblasti v smere x a 20% z výšky oblasti v smere y
dĺžka x
y, napr. 10cm 50px znamená, že ľavý horný roh obrázku je od ľavého horného
rohu oblasti vzdialený 10cm v smere x a 50pixelov v smere y, percentá a dĺžky
môžeme navzájom kombinovať (napr.: 10cm 20%)
top | center |
bottom, umiestnenie vzhľadom na oblasť vertikálne
left | center |
right, umiestnenie vzhľadom na oblasť horizontálne
Formátovanie textu:
- text-indent: odsadenie prvého riadku textu (odstavca) od ľavého
okraja
dĺžka | percentá / v jednotkách dĺžky | v percentách šírky oblasti
- text-align: zarovnanie textu horizontálne
left | right | center
| justify / | vľavo | vpravo | do stredu | na oba okraje
- text-decoration: efekty textu
none | [ underline || overline ||
line-through || blink] / žiadny efekt | [podčiarknutý text || nadčiarknutý
text || prečiarknutý text || blikajúci text, nie každý prehliadač podporuje
blikanie]
- letter-spacing: nastavenie medzier medzi znakmi
normal | dĺžka /
normálna vzdialenosť | presná dĺžka medzier, môžeme zadávať aj záporné hodnoty
- word-spacing: nastavenie medzery medzi slovami
normal | dĺžka /
normálna vzdialenosť | presná dĺžka medzier, môžeme zadávať aj záporné hodnoty
- text-transform: transformácie textu
capitalize | uppercase |
lowercase | none / kapitálky | všetky veľké | všetky malé | bez transformácie
- vertical-align: zarovnanie vertikálne, napr. v bunkách
tabuľky
baseline | sub | super | top | text-top | middle | bottom |
text-bottom | percentá | dĺžka / na základňu | dolný index | horný index |
horný okraj najvyššieho elementu | vrchná časť textu | na stred | spodný okraj
najnižšieho elementu | spodný okraj textu | posunutie o počet percent z výšky
textu | presná vzdialensť
- line-height: riadkovanie
normal | číslo | dĺžka | percentá /
normálne riadkovanie (110%, vzhľadom na diakritiku by sme mali používať aspoň
120%) | násobok normálneho riadkovanie | konkrétna hodnota | percentom z výšky
písma|
Rámčeky (neviditeľný rámček obklopujúci text/objekt, jeho oddelenie od
okolitej časti)
- margin-top: miesto nad textom
dĺžka | percento / vdialenosť v
dĺžkových jednotkách | v percentách zo šírky oblasti
- margin-bottom: miesto po textom
dĺžka | percento / vdialenosť v
dĺžkových jednotkách | v percentách zo šírky oblasti
- margin-left: miesto vľavo od textu
dĺžka | percento / vdialenosť
v dĺžkových jednotkách | v percentách zo šírky oblasti
- margin-right: miesto vpravo od textu
dĺžka | percento /
vdialenosť v dĺžkových jednotkách | v percentách zo šírky oblasti
- padding-top: zväčšenie rámčeku nad textom
dĺžka | percento /
vdialenosť v dĺžkových jednotkách | v percentách zo šírky oblasti
- padding-bottom: zväčšenie rámčeku pod textom
dĺžka | percento /
vdialenosť v dĺžkových jednotkách | v percentách zo šírky oblasti
- padding-left: zväčšenie rámčeku vľavo od textu
dĺžka | percento
/ vdialenosť v dĺžkových jednotkách | v percentách zo šírky oblasti
- padding-right: zväčšenie rámčeku vpravo od textu
dĺžka |
percento / vdialenosť v dĺžkových jednotkách | v percentách zo šírky oblasti
- border-top(bottom/left/right)-width - šírka hranice rámčeka hore
(dole/vľavo/vpravo)
thin | medium | thick | hodnota / tenká | stredná |
tučná | presná hodnota
- border-top(bottom/left/right)-color - farba hranice rámčeka hore
(dole/vľavo/vpravo)
#rgf - od 0 do F
#rrggbb - od 00 do FF
rgb(r,g,b)
- od 0 do 255
rgb(r%, g%, b%) - od 0% do 100%
- border-top(bottom/left/right)-style - štýl hranice rámčeka hore
(dole/vľavo/vpravo)
none - ruší vykreslenie rámčeka
hidden - skrité
vykreslenie
dotted - bodkované
dashed - čiarkovane
solid - spojitá
čiara
double - dvojitá čiara
groove - priestorový rámček
ridge -
priestorový vystúpený rámček
inset - osvetlený priestorový vtlačený
rámček
outset -osvetlený priestorový vtlačený rámček
Určenie pozície:
Existujú dva odlišné spôsoby určovanie pozície objektu na obrazovke.
Absolútny a relatívny. Absolútna pozícia umiestni objekt na do stránku na určené
súradnice, bez ohľadu na text okolo neho. Relatívna pozícia určuje, o koľko a má
objekt posunúť oproti svojej normálnej pozícii.
- position: určenie pozície elementu na stránke
absolute:
absolútne určenie pozície elementu na stránke
left, right, top, bottom -
pozícia zľava, z prava, z hora a zdola
relative: relatívne určenie
pozície elementu na stránke
left, right, top, bottom - pozícia zľava, z
prava, z hora a zdola
- z-index: "vrstva", v ktorej sa element nachádza, pri pozíciovaní sa
môžu elementy prekrývať, z-index určuje, ktorý bude hore
hodnota - celé
číslo, element s väčším z-indexom prekrýva element s nižším z-indexom
Odkazy:
Štýly môžeme priradiť aj odkazom. Dokonca aj v závislosti od toho, či je
aktívny alebo navštívený, príp. ak sa naň nastavíme myškou.
- a.link: normálny odkaz
- a.visited: navštívený odkaz
- a.hover: odkaz, nad ktorým je myška
- a.active: aktívny odkaz
A na koniec, "čerešnička na torte", zmena užívateľského prostredia
- cursor: zmena kurzora
url("adresa") - adresa na subor
*.cur
auto - automaticky, podľa objektu
crosshair - krížik
default -
štandardný (šípka)
hand - odkaz na linku
move - presúvanie
e-resize,
ne-resize, nw-resize, n-resize, se-resize, sw-resize, s-resize, w-resize -
zmena veľkosti okna
text - textový kurzor
wait - čakacie hodinky
help
- pomoc
Posuvné lišty okna. Nasledujúce informácie nie sú súčasťou štandardu W3C,
preto uvedené vlastnosti nebude podporovať každý prehliadač (IE ich podporuje,
Netscape nie).
- scrollbar-face-color: farba
farba1
- scrollbar-shadow-color: farba
farba2
- scrollbar-highlight-color: farba
farba3
- scrollbar-3dlight-color:
farba4
- scrollbar-darkshadow-color: farba
farba5
- scrollbar-track-color: farba
farba6
- scrollbar-arrow-color: farba
farba7