Dave Raggett, 2000. Augusztus 29.
Következzék a weblapok formázási lehetőségeinek, és a stíluslapok (CSS Cascading Style Sheets) nyelvének rövid bemutatása. Igyekszünk majd elkerülni a különböző gyártmányú és verziójú böngészők eltéréseiből adódó legtöbb problémát.
A következőkben megtanuljuk:
Kezdjük a szöveg és a háttér színének megadásával! Ezt a <style> elem (element) használatával érjük el, mely a dokumentum-részek (tags) stílusát határozza meg.
<style type="text/css"> body { color: black; background: white; } </style>
A <style> és </style> közti rész a stílus-szabályok (style rules) speciális jelölései szerint íródott. Minden szabály egy címke (tag) nevével kezdődik, majd következnek a stílus-tulajdonságok (style properties), { és } jelek között. A fönti példában a szabály a szöveg <body> címkéjére (tag) vonatkozik. Ahogy látni fogjuk, ez a címke a weblap általános képének alapja.
Minden stílus-tulajdonság a tulajdonság (property) nevével kezdődik, melyet egy kettőspont után követ a hozzá tartozó érték (value). Több stílus-tulajdonság esetén pontosvesszővel kell őket elválasztani. A fönti példában két tulajdonság szerepel: "color" (szín), mely a szöveg színét adja meg, és "background" (háttér) amely a lap háttérszínét állítja be. Érdemes a pontosvesszőt mindig, még az utolsó tulajdonság után is használni!
A színek megadhatók névvel, vagy számokkal, pl. rgb(255, 204, 204). A három szám az adott szín piros (red), zöld (green), és kék (blue) összetevőit jelöli, a 0 és 255 közti tartományban. Használható hexadecimális (tizenhatos számrendszerbeli) jelölés is, itt a #FFCCCC jelölés jelenti ugyanazt a színt. További részletek később!
Megjegyezzük, hogy a <style> (stílus) elemnek a dokumentum fejlécében (head) a helye, a <title> elemmel együtt, nem kerülhet a szövegtörzsbe (body)!
Ha várhatóan több weblapnál akarjuk használni ugyanazon stílusokat, érdemes lehet külön stíluslapot használni, melyre azután minden weblap hivatkozhat (link). Ennek módja a következő:
<link rel="stylesheet" href="style.css">
A <link> címke (tag) a dokumentum fejlécébe (head) kell kerüljön. A rel="stylesheet" rész szükséges ahhoz, hogy a böngésző-program fölismerje, hogy a href attribútum a stíluslap Web-címét (URL) adja meg.
A bal és jobb oldalon üresen maradó rész (lap-margók) megadására a "margin-left", és "margin-right" tulajdonságokkal van mód, pl.:
<style type="text/css"> body { margin-left: 10%; margin-right: 10%; } </style>
A fönti módon megadva mindkét oldalon az ablak szélességének 10%-a lesz a margó, természetesen követve a böngésző ablakának esetleges méret-változását.
A címsorok jobb megkülönböztethetősége érdekében megtehetjük, hogy a szövegtörzs margójánál előrébb kezdjük őket, pl.:
<style type="text/css"> body { margin-left: 10%; margin-right: 10%; } h1 { margin-left: -8%;} h2,h3,h4,h5,h6 { margin-left: -4%; } </style>
A fönti példában három stílus-szabály (style rule) szerepel. Az első a szövegtörzsre (body), a második a legfontosabb címsor-stílusra (h1), a harmadik a többi címsor-stílusra (h2, h3, h4, h5 és h6) vonatkozik. A címsorokra vonatkozó margók a szövegtörzs margóihoz adódnak hozzá, így ha a címsorokat a szövegtörzs margójától balra szeretnénk kezdeni, negatív számokat kell használnunk.
A következő példákban szereplő stílus-szabályoknak (style rules) továbbra is a <style> és </style> elemek közt kell szerepelniük, a dokumentum fejlécében (head), vagy egy hivatkozott (linked) stíluslapon (style sheet).
A bekezdés fölötti és alatti távolságok böngészőbéli alapbeállításai általában megfelelők, de ha szükséges, természetesen módosíthatók.
A bekezdés fölötti távolság a "margin-top", a bekezdés alatti a "margin-bottom" jellemzővel (property) állítható. A h2 címsor esetében ezek módosítása a következőképp történhet:
h2 { margin-top: 8em; margin-bottom: 3em; }
Az em egy igen hasznos mértékegység, mivel a betűk méretével együtt változik: 1em egyenlő a betű (font) magasságával. Az em használatával betűmérettől függetlenül módunk van megőrizni a weblap általános kinézetét. Ez a módszer jóval biztosabb, mint a pixel-, vagy pont-méretekkel történő megadás, melyek problémákat okzhatnak, ha valakinek az olvasáshoz nagyméretű betűkre van szüksége.
A pont a szövegszerkesztők általánosan használt mértékegysége. Sajnos, ugyanaz a pont-méret a különböző böngészőkben különbözőképp jelenik meg; ezt a problémát küszöböli ki az em használata.
Ha csak egy bizonyos címsor fölötti távolságot akarjuk módosítani, érdemes létrehozni egy elnevezett stílust (named style) számára. Ez a "class" tulajdonsággal (attribute) tehető meg, pl.:
<h2 class="subsection">Getting started</h2>
A megfelelő stílus-szabály pedig:
h2.subsection { margin-top: 8em; margin-bottom: 3em; }
A szabály (rule) egy ponttal elválasztott címke-névvel (h2, tag name), és a csoport-névvel (class attribute) kezdődik. Ha a pont előtt, vagy mögött szóközt hagyunk, a szabály nem fog működni. Vannak más módok is egy elem stílusának megadására, de ez a legrugalmasabb.
Ha a címsort egy bekezdés követi, az címsor alsó margója (margin-bottom) és a bekezdés fölső margója (margin-top), nem adódik össze, ehelyett a két érték közül a nagyobb lesz érvényes. Ez minden természetesen érvényes minden címkére (tag)!
Néha az első sor beljebb kell kezdődjön, mint a többi. A következő stílus-szabály a regényekben szokásos bekezdés-formázást utánozza:
p { text-indent: 2em; margin-bottom: 0; }
Ezzel a beállítással az első sor beljebb kezdődik (2em-mel), és a bekezdések közti távolság eltűnik (azaz 0 lesz, mely beállítástól tapasztalatom szerint a Netscape régebbi verziója tejesen megbokrosodik).
Ez a rész a a karakterek betűtípusának (font type), félkövér, dőlt, és egyéb stílusának (style), és méretének megadásával foglalkozik.
Leggyakrabban a betűk dőltté (italic), vagy félkövérré (bold) alakítása fordul elő. A legtöbb böngésző az <em> címkét (tag) is dőltnek értelmezi. Ha ehelyett bold italic-ként (félkövér dőlt) akarjuk megjeleníteni, a <strong> címkét pedig bold uppercase-nek (félkövér nagybetűs):
em { font-style: italic; font-weight: bold; } strong { text-transform: uppercase; font-weight: bold; }
Ha arra támad kedvünk, a címsorokat is kisbetűssé alakíthatjuk:
h2 { text-transform: lowercase; }
A legtöbb böngésző növekvő betűnagysággal jelzi a a címsorok fontosságát. Ha módosítjuk az eredeti méreteket, azt kockáztathatjuk, hogy a szöveg túl kicsi lesz ahhoz, hogy kényelmesen olvasható legyen, különösen, ha pontban van megadva a méret. Ezért azután javasolt relatív betű-méreteket használni.
Az alábbi példa a normál szöveg százalékában adja meg a címsorok méretét:
h1 { font-size: 200%; } h2 { font-size: 150%; } h3 { font-size: 100%; }
Számítanunk kell arra is, hogy kedvenc betűtípusunk nem lesz elérhető minden böngészőnél. Ennek megoldásaként több betűtípust (font) is felsorolhatunk, preferencia-sorrendben. Van egy pár gyűjtő-név, mely biztosan elérhető, így ajánlatos a lista végére ezek valamelyikét tenni: serif (talpas betű, mint a Times New Roman, vagy Courier), sans-serif (talp nélküli betű, mint az Arial), monospace (fix lépésközű, írógépszerű betű, mint a Courier), vagy cursive, ill. fantasy). Egy példa:
body { font-family: Verdana, sans-serif; } h1,h2 { font-family: Garamond, "Times New Roman", serif; }
A fönti példában a fontos címsorok elsősorban Garamond betűvel jelennek meg, ha az nem érhető el, akkor Times New Roman betűvel, és ha az sincs, a böngésző alap serif fontjával. A bekezdések Verdana betűvel, vagy annak hiányában a a böngésző alap sans-serif fontjával.
A különböző fontok olvashatósága általában nem annyira a font magasságán, inkább a kisbetűk magasságán múlik. A Verdana fonthoz hasonló betűk ezért sokkal könnyebben olvashatóak, s ezért bekezdés-szövegként javasolt használatuk.
Az első szabály, hogy ne használjunk olyan szöveget, mely nincs valamilyen (pl. <p>) blokk-szintű elembe ágyazva. Például:
<h2>Spring in Wiltshire</h2> Blossom on the trees, bird song and the sound of lambs bleating in the fields.
A címsort követő szöveg néhány böngészőben könnyen lehet, hogy rossz betűtípussal és margókkal fog megjelenni, ezért ajánlatos az ilyen szöveget bekezdésbe (<p> tag) foglalni, például:
<h2>Spring in Wiltshire</h2> <p>Blossom on the trees, bird song and the sound of lambs bleating in the fields.</p>
A második szabály, hogy mindig adjuk meg a elemeknél használandó betűtípust, mert ha csak méretét, vagy más tulajdonságát adjuk meg, néhány böngésző, "megfeledkezik" arról, hogy fix lépésközű fontot használjon.
pre { font-family: monospace; }
A harmadik szabály, hogy adjuk meg a használni kívánt betűtípust a címsoroknál, <p>, és <ul> elemeknél, ha szándékunkban áll keretet (border), vagy hátteret (background) használni pl. a <div> elemnél. Ezzel kikerülhetjük a hibát, mikoris néhány böngésző megfeledkezik az öröklött betűcsalád használatáról, s ehelyett a saját beállításában szereplő alap-betűtípusra vált.
h1,h2,h3,h4,h5,p,ul { font-family: sans-serif; }
Címsor, lista, bekezdés elemek, vagy ezek <div> elemmel keretezett csoportja körül egyszerűen megadható szegély, például:
div.box { border: solid; border-width: thin; width: 100% }
Megjegyezzük, hogy a "width" tulajdonság (property) nélkül néhány böngésző a jobb margót túlságosan jobbra helyezi! A föntieket azután pl. az alábbi módon használhatjuk:
<div class="box"> A <div> elem közti szöveg körül egy vékony keret lesz. </div>
A szegélyek típusválasztéka korlátozott: dotted, dashed, solid, double, groove, ridge, inset and outset. Ezek vastagságát a "border-width" tulajdonság (property) adja meg. Ennek értéke lehet thin, medium, thick, illetve egy szabott méret, pl. 0.1em. A szegély színét a "border-color" tulajdonság (property) adja meg.
Szép effektus lehet, ha egy keret hátterét megszínezzük, vagy egy képpel "kitapétázzuk". Ehhez a "background" tulajdonságot (property) használhatjuk. Egy <div> elemek közé zárt részt az alábbi módon festhetünk ki:
div.color { background: rgb(204,204,255); padding: 0.5em; border: none; }
A szegélyre való hivatkozás nélkül néhány böngésző csak az egyes karakterek alatti részt színezi be. A "padding" tulajdonság (property) egy kis távolságot tart a színezett terület határa, és a beléfoglalt szöveg között. E távolság akár minden oldalon különböző is lehet a "padding-left", "padding-top", "padding-right", és "padding-bottom" tulajdonságok beállításával, pl.: padding-left: 1em
Ha nem minden oldalon akarunk szegélyt, minden szegélyt egymástól függetlenül is megadhatunk a "border-left", "border-top", "border-right", és "border-bottom" tulajdonságok, és a típust megadó megfelelő kiegészítők használatával:
p.figyelem { padding-left: 0.2em; border-left: solid; border-right: none; border-top: none; border-bottom: none; border-left-width: thin; border-color: red; }
ami azután a "figyelem" típusú (class) bekezdések bal oldalán piros vonalat jelenít meg.
Néhány példát látunk már korábban, emlékeztetőül:
body { color: black; background: white; } strong { color: red }
Itt beállítottuk a szöveg fekete, a háttér fehér alap-színét, és azt, hogy a <strong> elemek pirosok legyenek. Tizenhat szabványos szín-név van (lásd később), de használhatjuk az RGB színmegadást (a szín piros, zöld és kék összetevőinek megadása a 0-255 tartományba eső (decimális) számmal), így az rgb(255, 0, 0) megfelel a "red" nevű (piros) színnek. Használhatók hexadecimális számok is: ekkor a '#' karaktert követő hat hexadecimális számjegy adja meg az RGB színkódokat. Alább található egy, az RGB értékek és a hexadecimális színkódok közt oda-vissza konvertáló program.
A hypertext hivatkozások színeinek megadására is alkalmas CSS. Ekkor különböző színnel jelölhetők azok a hivatkozások, ahol még nem jártunk, ahol már igen, és az is amire épp kattintunk (sőt arra is megadhatunk külön színt, ha az egér épp a hivatkozás fölött jár).
:link { color: rgb(0, 0, 153) } /* még nem látogatott hivatkozás */ :visited { color: rgb(153, 0, 153) } /* már látogatott hivatkozás */ :active { color: rgb(255, 0, 102) } /* rákattintáskor */ :hover { color: rgb(0, 96, 255) } /* egér alatt */
Ha a hivatkozást (hypertext link) aláhúzás nélkül szeretnénk megjeleníteni, a "text-decoration" tulajdonság (property) értékét kell "none"-ra állítanunk:
a.nincsvonal { text-decoration: none }
Ami azután elnyomja a következő hivatkozás aláhúzását:
Ez egy aláhúzás nélküli <a class="nincsvonal" href="egyuj.html">hivatkozás</a>
A legtöbb ember, ha egy weblapon aláhúzott szöveget lát, azt hivatkozásnak gondolja. Emiatt azután javasolt a hypertext hivatkozások (link) aláhúzását meghagyni. Hasonló meggondolásból érdemesebb általában a hivatkozások színeit is háborítatlanul hagyni, kivéve persze, ha a háttérszín nehezen olvashatóvá tenné a szöveget.
A színek használatánál jusson eszünkbe, hogy a népesség 5-10%-a szenved a színvakság valamilyen formájában. Ez nehézséget okozhat a piros és zöld, vagy a kék és sárga színek megkülönböztetésében. Néha előfordul a színérzékelés teljes hiánya is. Javasolt az olyan elő-, és háttérszín-kombinációk elkerülése, melyet a színvakok nehezen olvashatnak el.
Az alábbi táblázatból kiolvashatók a szabványos szín-nevek. Ez a tizenhat színt a HTML szabvány 3.2-es, és 4.01-es verziója definiálja, és ezek megfelelnek az személyi számítógépek (PC) alap VGA színeinek. A legtöbb böngésző elfogad további szín-neveket is, de ezek használata nem ajánlott.
Szín-nevek, és RGB kódok | |||||||
---|---|---|---|---|---|---|---|
black: #000000 |
green: #008000 |
maroon: #800000 |
navy: #000080 |
||||
silver: #C0C0C0 |
lime: #00FF00 |
red: #FF0000 |
blue: #0000FF |
||||
gray: #808080 |
olive: #808000 |
purple: #800080 |
teal: #008080 |
||||
white: #FFFFFF |
yellow: #FFFF00 |
fuchsia: #FF00FF |
aqua: #00FFFF |
A "#FF9999" és hasonló számok a színeket hexadecimális RGB értékekkel adják meg: az '#' jel utáni első két karakter adja meg a piros (red), a következő kettő a zöld (green), az utolsó kettő a kék (blue) értéket (a tizenhatos számrendszerben a szokott 0-9 számjegy után az ABC első betűit használjuk a 10-től (A), 15-ig (F) terjedő számjegyek jelölésére). E számok értéke decimálisan 0 és 255 között van. A decimális értékek bármely hexadecimális számokat ismerő számológéppel (pl. a Windows részeként kapott kalkulátorral) hexadecimálissá konvertálhatók.
Az újabb számítógépek többmillió színű képeket is megjelenítenek, de sok régebbi szín-rendszer maximum 256-színt tud egyidejűleg megjeleníteni. Ilyenkor a böngészők megpróbálják a valódi színeket a rendelkezésre álló (fix) palettából kikeverni, és ez néha a színek zavaró mintázottságához vezethet.
A legtöbb böngésző támogatja az ún. böngésző-biztos (browser safe) palettát, mely hat egyenlő fokozatra osztja (és úgy kombinálja) a piros, zöld, és kék szín-összetevőket. Az összetevők megengedett értékei:
RGB | 0 | 51 | 102 | 153 | 204 | 255 |
---|---|---|---|---|---|---|
Hex | 00 | 33 | 66 | 99 | CC | FF |
Ha a böngésző a böngésző-biztos palettát használja,a lap háttereként a legközelebbi paletta-színt fogja megjeleníteni, megelőzve ezzel a színek előbb említett (és főleg hátter-színek esetén zavaró) vibrálását. Viszont ha háttérszínként a palettán nem szereplő színt választunk, előfordulhat, hogy a háttér-szín megváltozik!
A böngésző-biztos paletta színeinek táblázata (Bob Stein elrendezésében):
FFFFFF | CCCCCC | 999999 | 666666 | 333333 | 000000 | FFCC00 | FF9900 | FF6600 | FF3300 | ||||||
99CC00 | CC9900 | FFCC33 | FFCC66 | FF9966 | FF6633 | CC3300 | CC0033 | ||||||||
CCFF00 | CCFF33 | 333300 | 666600 | 999900 | CCCC00 | FFFF00 | CC9933 | CC6633 | 330000 | 660000 | 990000 | CC0000 | FF0000 | FF3366 | FF0033 |
99FF00 | CCFF66 | 99CC33 | 666633 | 999933 | CCCC33 | FFFF33 | 996600 | 993300 | 663333 | 993333 | CC3333 | FF3333 | CC3366 | FF6699 | FF0066 |
66FF00 | 99FF66 | 66CC33 | 669900 | 999966 | CCCC66 | FFFF66 | 996633 | 663300 | 996666 | CC6666 | FF6666 | 990033 | CC3399 | FF66CC | FF0099 |
33FF00 | 66FF33 | 339900 | 66CC00 | 99FF33 | CCCC99 | FFFF99 | CC9966 | CC6600 | CC9999 | FF9999 | FF3399 | CC0066 | 990066 | FF33CC | FF00CC |
00CC00 | 33CC00 | 336600 | 669933 | 99CC66 | CCFF99 | FFFFCC | FFCC99 | FF9933 | FFCCCC | FF99CC | CC6699 | 993366 | 660033 | CC0099 | 330033 |
33CC33 | 66CC66 | 00FF00 | 33FF33 | 66FF66 | 99FF99 | CCFFCC | CC99CC | 996699 | 993399 | 990099 | 663366 | 660066 | |||
006600 | 336633 | 009900 | 339933 | 669966 | 99CC99 | FFCCFF | FF99FF | FF66FF | FF33FF | FF00FF | CC66CC | CC33CC | |||
003300 | 00CC33 | 006633 | 339966 | 66CC99 | 99FFCC | CCFFFF | 3399FF | 99CCFF | CCCCFF | CC99FF | 9966CC | 663399 | 330066 | 9900CC | CC00CC |
00FF33 | 33FF66 | 009933 | 00CC66 | 33FF99 | 99FFFF | 99CCCC | 0066CC | 6699CC | 9999FF | 9999CC | 9933FF | 6600CC | 660099 | CC33FF | CC00FF |
00FF66 | 66FF99 | 33CC66 | 009966 | 66FFFF | 66CCCC | 669999 | 003366 | 336699 | 6666FF | 6666CC | 666699 | 330099 | 9933CC | CC66FF | 9900FF |
00FF99 | 66FFCC | 33CC99 | 33FFFF | 33CCCC | 339999 | 336666 | 006699 | 003399 | 3333FF | 3333CC | 333399 | 333366 | 6633CC | 9966FF | 6600FF |
00FFCC | 33FFCC | 00FFFF | 00CCCC | 009999 | 006666 | 003333 | 3399CC | 3366CC | 0000FF | 0000CC | 000099 | 000066 | 000033 | 6633FF | 3300FF |
00CC99 | 0099CC | 33CCFF | 66CCFF | 6699FF | 3366FF | 0033CC | 3300CC | ||||||||
00CCFF | 0099FF | 0066FF | 0033FF |
A régebbi böngészők (Netscape 4.0, és Internet Explorer 4.0 előtt) nem, vagy nem teljesen támogatták a CSS-t. Az ilyen böngészők számára is megadható a stílus, a HTML kódot magát használva.
A háttérszín megadható a <body> címkével (tag). A címke a weblap megjelenítésre kerülő része elé kell kerüljön!. A következő példa a háttérszínt fehérre, a szövegszínt feketére állítja:
<body bgcolor="white" text="black">
A hivatkozások (hypertext links) színei is állíthatók. Három tulajdonság (attribute) adható meg: "link" (a még nem látogatott hivatkozás színe) "vlink" (a már látogatott hivatkozás színe) "alink" (a linkre való kattintáskor használt szín). Egy példa, mely mindhármat megadja:
<body bgcolor="white" text="black" link="navy" vlink="maroon" alink="red">
Beállítható az is, hogy a böngésző a lap hátterét "kitapétázza" egy adott web-címről vett képpel (a "background" tulajdonság (attribute) használatával):
<body bgcolor="white" background="textura.jpg" text="black">
Ekkor is érdemes megadni a háttérszínt, a "bgcolor" tulajdonsággal (attribute), számítva arra az esetre, ha a böngésző valamiért nem képes megjeleníteni a képet. Ellenőrizendő, hogy a választott színek nem akadályozzák-e az olvashatóságot. Egy extrém példa:
<body bgcolor="black">
A legtöbb böngésző alapértelmezésként feketén jeleníti meg a szöveget, így végeredményben a lap fekete alapon fekete betűkel fog megjelenni! Sok ember szenved a színvakság valamely fajtájától, képtelen lévén bizonyos színek (rossz esetben a szöveg és a háttér színének) megkülönböztetésére.
Más probléma jelentkezhet a weblap nyomtatásakor. Sok böngésző ilyenkor figyelmen kívül hagyja a háttérszínt, ugyanakkor "elfogadja" a szövegszín beállítását. A szöveg fehérre állítása így gyakran üres lap nyomtatását eredményezheti!
Táblázat celláiban is használható a "bgcolor" tulajdonság (attribute):
<table border="0" cellpadding="5"> <tr> <td bgcolor="yellow">sárga háttészínű cella</td> </tr> </table>
A <font> címke (tag) használható a betűtípus (font) beállítására, méretének és színének megadására. Az alábbi példa csak a színt állítja:
Ebben a mondatban van egy <font color="yellow">sárga</font> szó.
A "face" tulajdonság (attribute) adja meg a betűtípust. Elfogad több fontot is, preferencia-sorrendben, például:
<font face="Garamond, Times New Roman"> ez itt a szöveg...</font>
A "size" tulajdonság (attribute) a font méretének megadására szolgál, értéke egy szám, 1-től 7-ig. Ha a szám előtt -, vagy + jel szerepel, az addigi font-mérethez képest vett értéket jelent; így a "+1" méret az addig használtnál eggyel nagyobb font-méretet jelenti, a "-1" értelemszerűen az eggyel kisebbet, például:
<font size="+1" color="maroon" face="Garamond"> ez itt a szöveg...</font>
Itt is van néhány dolog, ami kerülendő! Ne válasszunk olyan színkombinációkat, melyek színvakok számára megnehezítik a szöveg elolvasását! Ne használjuk a <font> címkét (tag) normál szöveg címsorrá formázására (erre használjuk a h1-től h6-ig terjedő címkéket (tag), a címsor fontosságának megfelelően).