3. fejezet¶
Az eddigiek során tárgyalt HTML nyelvet a weboldal tartalmának kialakítására és strukturálására használtuk. Ha a tartalmat formázni is szeretnénk, akkor a CSS-re (Cascading Style Sheets) lesz szükségünk.
Szintaxis¶
A CSS utasítások szintaxisa a következőképpen néz ki:
1 2 3 4 5 |
|
A szelektor (más néven kijelölő) segítségével megmondjuk, hogy a weboldal mely elemét (vagy elemeit) szeretnénk formázni. Ezután kapcsos zárójelek között, pontosvesszővel elválasztva megadjuk az elvégzendő formázásokat tulajdonság: érték
formában. A tulajdonság
az adott elem formázandó tulajdonsága (pl. háttérszín, betűtípus, térköz stb.), az érték
pedig az adott tulajdonsághoz tartozó, beállítani kívánt érték.
A CSS kódba írhatunk kommenteket (megjegyzéseket) is az alábbi szintaxissal:
1 |
|
Példa: Egy konkrét CSS kódrészlet
1 2 3 4 5 6 7 8 9 10 11 12 13 |
|
CSS beágyazása¶
Egy HTML kódba többféleképpen is beágyazhatunk CSS formázásokat.
Inline CSS esetén a tagek style
attribútumának értékeként adjuk meg a CSS formázást. Ekkor a formázás mindig csak az adott objektumra lesz érvényes. Ebben az esetben nem használunk CSS szelektort, hiszen mindig az aktuális objektumot formázzuk.
1 |
|
Figyelem
Az inline CSS nem hatékony, valamint a kód átláthatóságát is rontja. Emiatt, ha csak lehet, kerüljük a használatát!
A lapon belüli (internal) CSS-t a <head>
-ben adjuk meg, <style>
és </style>
között. Az így kiadott formázások az aktuális HTML dokumentumra lesznek érvényesek.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|
A külső (external) CSS lényege, hogy a CSS formázásokat egy külső (.css kiterjesztésű) fájlba írjuk, majd ezt a fájlt ágyazzuk be a HTML állományunk <head>
részében, a <link/>
páratlan tag segítségével. Ekkor a külső CSS fájlban lévő formázások minden olyan HTML dokumentumra érvényesek lesznek, amelyek ezt a CSS fájlt beágyazzák.
1 2 3 4 5 6 7 8 9 10 11 12 |
|
Tipp
A külső (external) CSS különösen hasznos akkor, amikor egy weboldal több lapjának szeretnénk ugyanazt a formázást adni.
Amikor külső CSS fájlokat ágyazunk be a HTML dokumentumokba, a href attribútumban meg kell adnunk a CSS fájl elérési útját. Ez lehet relatív vagy abszolút elérési útvonal.
Relatív elérési út¶
A relatív elérési útvonal a HTML fájl pozíciójától függ. Például, ha a HTML fájl és a CSS fájl ugyanabban a mappában található, akkor egyszerűen a fájlnevet kell megadni.
1 2 |
|
Ha a CSS fájl egy almappában van, akkor az elérési utat az alábbi módon kell megadni:
1 2 |
|
Ha a CSS fájl egy szülő mappában van, akkor a .. (pont-pont) szimbólumot használjuk a szintlépéshez:
1 2 |
|
A relatív elérési utak megkönnyítik a projekt fájlok átrendezését és mozgatását anélkül, hogy az abszolút utak módosítására lenne szükség. A relatív elérési utak használata esetén a HTML fájlokat könnyebben lehet megosztani, mivel azok nem függnek a fájlok pontos elérési útvonala. Amikor csak lehet, érdemes relatív elérési útvonalakat használni.
Abszolút elérési út¶
Az abszolút elérési útvonal mindig teljes URL-t ad meg, függetlenül a HTML fájl helyzetétől. Például egy külső szerveren található CSS fájl elérési útja lehet ilyen:
1 2 |
|
Alapvető szelektorok¶
Ebben a részben megismerkedünk a négy legalapvetőbb CSS szelektortípussal, amikkel HTML objektumokat jelölhetünk ki.
- Elem szelektor: tagnév alapján jelöli ki az összes ugyanolyan típusú HTML elemet
- Class szelektor: azokat az elemeket jelöli ki, amelyek az adott
class
értékkel rendelkeznek; az ilyen szelektort ponttal (.
) kezdjük - Id szelektor: az adott
id
értékkel rendelkező elemet jelöli ki; az ilyen szelektort kettős kereszttel (#
) kezdjük - Univerzális szelektor: a
*
szelektorral az összes HTML objektumot kijelölhetjük
Példa: A négy alapvető szelektortípus: elem szelektor, class szelektor, id szelektor és univerzális szelektor
1 2 3 4 5 6 7 |
|
Értékek, mértékegységek¶
Mielőtt megismernénk az első konkrét, HTML elemek formázására szolgáló CSS utasításainkat, érdemes áttekinteni a CSS-ben használatos fontosabb mértékegységeket.
- Hosszúság megadása:
- abszolút hosszúság:
mm
(milliméter),cm
(centiméter),in
(inch = hüvelyk),pt
(pont),px
(pixel),pc
(pica) - relatív hosszúság:
%
(más értékekből számolódik),em
(betűmérethez viszonyít),rem
(gyökérelem betűméretéhez viszonyít),vw
(ablakszélesség 1%-ához viszonyít),vh
(ablakmagasság 1%-ához viszonyít)
- abszolút hosszúság:
- Szögek megadása:
deg
(fok),rad
(radián),grad
(gradián) - Színek megadása:
- angol névvel - pl.
blue
- decimális RGB-kóddal - pl.
rgb(0, 0, 255)
- százalékos RGB-kóddal - pl.
rgb(0%, 0%, 100%)
- hexadecimális RGB-kóddal - pl.
#0000FF
- angol névvel - pl.
A színmegadási módokról részletesebben
Az additív színkeverés a vörös (Red), zöld (Green) és kék (Blue) alapszínekkel dolgozik, és ezekből kever ki különböző színeket. Az RGB-kód (a decimális, a százalékos és a hexadecimális RGB-kód is) azt kódolja, hogy a három alapszínből rendre mekkora mennyiséget használtunk fel egy adott szín kikeveréséhez.
A decimális RGB-kódnál mindhárom alapszín mennyisége 0 és 255 közötti lehet. Például az rgb(0, 0, 255)
azt jelenti, hogy a vörös (Red) szín mennyisége 0, a zöld (Green) szín mennyisége szintén 0, a kék (Blue) szín mennyisége pedig a maximális 255 - tehát ez a színkód éppen a kék színt kódolja.
Az alapszínek mennyiségét megadhatjuk százalékosan is, ekkor értelemszerűen 0% és 100% közötti értékeket írunk mindenhova. Például százalékos megadás esetén a kék szín kódja a következő lesz: rgb(0%, 0%, 100%)
.
A hexadecimális RGB-kód is pontosan ugyanígy működik, csak talán első ránézésre ez nem annyira világos. A hexadecimális RGB-kódban #
(kettős kereszt) után 6 darab, tizenhatos számrendszerbeli számjegyet adunk meg (tehát minden számjegy 0 és F (= 15) közötti). Az első két számjegy a vörös (Red), a második kettő a zöld (Green), az utolsó kettő pedig a kék (Blue) szín mennyiségét kódolja. Például a #0000FF
a kék színt kódolja, hiszen a vörös és zöld mennyisége minimális (00), a kék mennyisége pedig a maximális (FF).
- Ha az adott (vörös, zöld vagy kék) színkomponenshez tartozó 2 számjegy megegyezik, akkor ezt rövidítve is írhatjuk. Például
#0066FF
helyett azt is írhatjuk, hogy#06F
. - A hexadecimális színkód nem érzékeny a kis- és nagybetűkre (tehát például
#12BD0F
és#12bd0f
ugyanaz).
Tipp
Nyilván senki nem akarja fejből megtanulni az összes létező színkódot. Szerencsére vannak olyan online szoftverek (például ez), amelyekkel manuálisan kiválaszthatunk egy nekünk tetsző színt a színpalettáról, és megtudhatjuk annak az RGB-kódját.
Szövegek formázása¶
Az alábbiakban áttekintjük a szövegekkel kapcsolatos fontosabb CSS formázásokat.
font-family
: betűtípus- értékeként több betűtípus is felsorolható vesszővel elválasztva - ekkor a felsoroltak közül a legelső telepített betűtípus lesz beállítva
- a több szóból álló betűtípusok nevét (pl. Courier New) aposztrófok között (
'...'
) adjuk meg
font-size
: betűméretfont-weight
: betűvastagság- lehetséges értékei:
normal
(alapértelmezett vastagság),bold
(vastag),bolder
(vastagabb),lighter
(vékonyabb), 100 és 900 közötti szám
- lehetséges értékei:
font-style: italic
- dőlt betűssé tételcolor
: betűszíntext-align
: szöveg vízszintes igazítása- lehetséges értékei:
left
(balra),right
(jobbra),center
(középre),justify
(sorkizárt)
- lehetséges értékei:
text-transform
: szöveg átalakítása- lehetséges értékei:
uppercase
(csupa nagybetűs),lowercase
(csupa kisbetűs),capitalize
(minden szó első betűje nagybetű),none
(alapértelmezett)
- lehetséges értékei:
Példa: Néhány szövegformázás
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
|
A dobozmodell¶
Minden HTML objektum felfogható egy téglalap alakú dobozként. CSS-ben gyakran használjuk a dobozmodell fogalmat, amikor elemek elrendezéséről és dizájnolásáról beszélünk. Az alábbi ábrán láthatjuk ennek a dobozmodellnek a részeit. (Az ábra forrása)
- A
content
jelenti a doboz tartalmát, ami általában az elem szöveges tartalma vagy egy kép. - A
padding
a tartalom körül található belső térköz. - A
border
a tartalmon és a belső térközön kívül elhelyezkdő szegély. - A
margin
a szegélyen kívül található külső margó.
Térközök megadása¶
A padding-top
, padding-right
, padding-bottom
és padding-left
CSS tulajdonságokkal beállíthatjuk egy elem felső, jobb oldali, alsó és bal oldali térközének a mértékét.
Ezek a jellemzők összevonva is megadhatók a padding
tulajdonsággal, amelynek értékeként megadjuk sorban a felső, jobb, alsó és végül a bal térköz mértékét. Ha ezek közül valamelyik paramétert elhagyjuk, akkor az a szemközti oldaltól fogja örökölni az értéket.
Példa: Térköz megadása a padding
tulajdonsággal
1 2 3 4 5 6 7 8 9 10 |
|
Margók megadása¶
Nagyon hasonlóan, mint ahogy azt a térközöknél láttuk, a margók is megadhatók...
- ...külön-külön, a
margin-top
,margin-right
,margin-bottom
ésmargin-left
tulajdonságokkal - ...összevonva, a
margin
tulajdonsággal (felső-jobb-alsó-bal sorrendben itt is - ha valamelyik margó méretét nem adjuk meg, akkor a szemközti oldaltól örökli azt).
A margin-left
és margin-right
tulajdonságoknál az auto
értéket felhasználhatjuk az elem vízszintes igazítására:
margin-left: auto
: vízszintesen jobbra igazítja az elemetmargin-right: auto
: vízszintesen balra igazítja az elemet- ha mind a bal, mind a jobb margó értéke
auto
, akkor vízszintesen középre igazodik az elem.
Példa: Elem vízszintesen középre igazítása
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
|
Szegélyek megadása¶
A szegélyek megadására a border
CSS tulajdonság szolgál. Ennek értékeként 3 paramétert adunk meg: rendre a szegély vastagságát, stílusát és színét. Ezeket egyébként külön-külön is megadhatjuk a border-width
, border-style
és border-color
tulajdonságokkal.
A szegély vastagsága (border-width
) lehet a thin
(vékony), medium
(közepes) és thick
(vastag) kulcsszavak valamelyike, de ha ennél pontosabbak szeretnénk lenni, akkor akár pixelben is megadhatjuk a szegélyvastagságot.
A szegély stílusa (border-style
) lehet solid
(folytonos), dashed
(szaggatott), dotted
(pontozott), double
(dupla), groove
(faragott), ridge
(kidomborodó), outset
(kiemelkedő), inset
(süllyesztett), none
(nincs szegély) vagy hidden
(rejtett).
Ha nem szeretnénk minden irányból szegélyt adni egy objektumnak, akkor a border-top
, border-right
, border-bottom
és border-left
tulajdonságokkal külön-külön is megadhatjuk a felső, jobb, alsó és bal szegélyek értékét.
Példa: Szegélyek megadása
1 2 3 4 5 6 7 8 9 |
|
Lekerekített sarkok¶
A border-radius
CSS tulajdonsággal lekerekített sarkú szegélyt adhatunk egy HTML objektumnak. A tulajdonság értékeként 4 paraméter adható meg: sorban a bal felső, jobb felső, jobb alsó és bal alsó sarkok sugara. Nem megadott paraméter esetén a szemközti saroktól öröklődik a sugár értéke.
Példa: A border-radius
tulajdonság használata
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
|
Elemek méretezése¶
Miután megismertük a CSS dobozmodellt, beszélhetünk a HTML elemek méretéről (szélességéről és magasságáról).
Egy elem szélességét a width
, magasságát pedig a height
CSS tulajdonsággal adhatjuk meg. Ezek értékeként megadható a korábban tárgyalt abszolút és relatív hosszúságmértékek valamelyike, vagy az auto
speciális érték (ekkor a böngésző határozza meg a méretet).
Ehhez hasonlóan a min-width
, max-width
, min-height
és max-height
tulajdonságokkal rendre megadhatjuk egy elem minimális és maximális szélességét, valamint minimális és maximális magasságát.
A box-sizing tulajdonság¶
A méret (szélesség és magasság) megadásának többféle értelmezése lehet. Ennek szabályozására szolgál a box-sizing
CSS tulajdonság. Értékei:
content-box
: az elem méretébe csak a tartalom tartozik bele (alapértelmezett)border-box
: az elem méretébe a tartalom, a térközök és a szegélyek is beletartoznak.
Ha egy másik objektumon belül elhelyezkedő elem méretét százalékban adjuk meg, akkor előfordulhat, hogy a következő jelenséggel találjuk szembe magunkat:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
|
Látható, hogy a beágyazott objektum szegélye "kilóg" az őt tartalmazó objektumból, ami közel sem mondható szépnek. Ennek a jelenségnek az oka, hogy az elemek méretébe alapértelmezett módon csak az elem tartalma tartozik bele, a térközök és a szegélyek nem lesznek figyelembe véve a méret meghatározásakor (content-box
).
Ha azt szeretnénk, hogy a méretbe a tartalom mellett a térközök és a szegélyek is beletartozzanak, használjuk a box-sizing: border-box
utasítást!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
|
Táblázatok formázása¶
A HTML táblázatokra, azok soraira és celláira is használhatók a korábban tanult formázások, valamint a térközre, margóra és szegélyre vonatkozó utasítások.
A táblázatnak és annak celláinak a már jól ismert border
tulajdonsággal adhatunk szegélyt. Alapértelmezett módon a táblázat szegélyei és a cellák szegélyei el vannak választva egymástól, ezért úgy tűnhet, mintha a táblázatban mindenhol dupla szegélyek lennének. A border-collapse: collapse
utasítással ezek a szegélyek összevonhatók.
A táblázatnak a szokásos módon megadhatjuk a szélességét és magasságát (width
és height
tulajdonságok), valamint a vízszintes margók értékének auto
-ra állításával vízszintesen középre igazíthatjuk a táblázatot az oldalon belül.
Ha egy táblázat rendelkezik címmel (amit a <caption>
taggel adunk meg), akkor ez a cím alapértelmezett módon a táblázat fölött jelenik meg. A caption-side: bottom
utasítással viszont áthelyezhető a táblázat alá.
A vertical-align: middle
utasítással egy táblázatcella tartalmát függőlegesen középre igazíthatjuk. A tartalom vízszintes igazítására a korábban tanult text-align
tulajdonságot használjuk.
A háttér formázása¶
Ebben a részben megismerünk néhány fontosabb CSS tulajdonságot, amelyet a háttér formázására használhatunk.
background-color
: háttérszín- értékeként megadható egy szín vagy a
transparent
(átlátszó) kulcsszó
- értékeként megadható egy szín vagy a
background-image
: háttérkép- a beállítani kívánt háttérkép elérési útvonalát az
url('elérési_útvonal')
segítségével adjuk meg
- a beállítani kívánt háttérkép elérési útvonalát az
background-repeat
: háttérkép ismétlődése- lehetséges értékek:
repeat
(vízszintes és függőleges ismétlődés, alapértelmezett),repeat-x
(vízszintes ismétlődés),repeat-y
(függőleges ismétlődés),no-repeat
(nem ismétli)
- lehetséges értékek:
background-position
: háttérkép pozíciója- két értéket vár: rendre a vízszintes és a függőleges pozíciót
- a vízszintes pozíció értékei:
left
(bal),right
(jobb),center
(középre) - a függőleges pozíció értékei:
top
(fent),bottom
(lent),center
(középre) - a fenti kulcsszavak helyett megadhatók százalékos értékek is a pozíciók helyén
- nem kötelező mindkét értéket megadni (ha elhagyjuk a második paramétert, akkor függőlegesen középre lesz pozicionálva a háttérkép)
- a vízszintes pozíció értékei:
- két értéket vár: rendre a vízszintes és a függőleges pozíciót
background-size
: háttérkép mérete- két értéket vár: rendre a vízszintes és a függőleges méretet
- nem kötelező mindkét értéket megadni
- megadható abszolút vagy relatív hossz, vagy a lenti kulcsszavak valamelyike
auto
: automatikus (alapértelmezett)cover
: a tartalmazó elem szélességére vagy magasságára méretezi a háttérképet az eredeti méretarányok megtartásával úgy, hogy a kép a teljes hátteret kitöltse (lehet, hogy a kép bizonyos részei nem fognak látszani)contain
: a legnagyobb méretre skálázza a háttérképet az eredeti méretarányok megtartásával úgy, hogy a kép teljes egészében látható legyen
- két értéket vár: rendre a vízszintes és a függőleges méretet
Tipp
Példa: Háttérformázások (A felhasznált háttérkép forrása)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
|