Tartalomjegyzék

CSS kijelölők - A dokumentumfa

A dokumentumfa a HTML dokumentumszerkezet faszerkezetben történő ábrázolását jeleni. Úgy néz ki, mint egy családfa, az elemek hierarchikus viszonyban állnak egymással.

Készítettem egy egyszerű HTML oldalt, ami segíteni fog a CSS működésének megértésében. A weboldal itt érhető el.

Ez nem egy új MLM-hálózat tagjait ábrázolja, hanem a fenti weboldal faszerkezetét.

DOM szerkezet

Gyermek - szülő

Ebben a faszerkezetben szülőnek nevezzük az olyan elemet, ami alatt egy szinttel áll még legalább egy másik elem. A gyermek pedig olyan elem, ami felett egy szinttel egy szülő áll.

A jelölt div elem szülője a h2 és az ul elemeknek. Ezért a h2 és az ul elemek a div elem gyermekei. Azonban az ezek alatt álló li és a elemek már nem gyermekei a div elemenk.

Hasonlóan a jelölt ul elem az alatta lévő két li elem szülője, a két li elem pedig az ul gyeremekei. Ha ezen li elemek alatt állna még másik elem is, akkor azok sem lennének már az ul gyermekei.

DOM szerkezet

Ősök, leszármazottak

A jelölt elemek mind a div elem leszármazottai. A leszármazottakba beletartoznak a gyermekek és az unokák is. A div elem az összes jelölt leszármazott őse.

A html elem minden más elem őse, és minden elem a html elem leszármazotta. A html elemnek csak egy gyermeke van, a body, az ábrán csak a body elemet tüntettem fel.

DOM szerkezet

Testvérek

Testvérek azok az elemek, amelyek ugyanazon a szinten helyezkednek el, és ugyanazon a szülőn osztoznak.

DOM szerkezet

Formázzuk a h1-es címsorokat! Legyenek zöld hátterűek! Ezt az alábbi stíluslappal tudjuk elérni:

h1 {
    background: lime;
}

A formázott weboldal itt tekinthető meg. A dokumentumfával szemléltetve, a fenti stíluslap ezeket az elemeket formázta:

DOM szerkezet

Csoportosítás

Egy meghatározásblokkot egynél több címkére is alkalmazhatjuk, ha vesszővel elválasztva felsoroljuk a formázandó címkéket.

h1, h2 {
    background: lime;
}

A formázott weboldal itt tekinthető meg. A dokumentumfával szemléltetve, a fenti stíluslap ezeket az elemeket formázta:

DOM szerkezet

Osztálykijelölők

Az előzőekben az összes h1, h2 címre vonatkozott a stílus. Ha nem akarunk ilyen egységes megjelenést, akkor a class attribútummal minden címkére külön szabályozhatjuk, hogy melyik stílus vonatkozzon rá, és melyik ne. A class attribútumot szinte bármelyik címkébe beleírhatjuk, így:

<h1 class="osztalykijelolo1">h1 címsor</h1>
<h2 class="osztalykijelolo2">
h2 címsor</h2>

Ekkor a stíluslapban így tudjuk különválasztani a h1 kétféle megjelenését:

h1, h2 {
    background: lime;
}

h1.center, h2.center {
    background: maroon;
}

A stíluslap első fele ugyanaz, mint eddig. A második fele újdonság. Ez a rész azokra a h1 és h2 címsorokra vonatkozik, amelyeknek a center nevű osztálykijelölőt adtuk meg a fenti deklarációval. Láthatjuk, hogy a background tulajdonság kétszer szerepel a stíluslapban; kérdés, hogy milyen színűek lesznek a center osztálykijelölővel ellátott címsorok? A válasz, hogy gesztenyebarnák, mert mindig a pontosabb stílus végzi a formázást. Először általánosságban adtuk csak meg, hogy minden h1, h2 legyen piros, de utána már pontosabban: minden, center osztálykijelölővel ellátott h1, h2 legyen gesztenyebarna. Ezért felülíródik a színre vonatkozó utastítás.

A formázott weboldal itt tekinthető meg. A dokumentumfával szemléltetve, a fenti stíluslap ezeket az elemeket formázta:

DOM szerkezet

Egy bizonyos osztálykijelölőre vonatkozó stílust használhatunk rövidítve is. Az alábbi példa az összes olyan elemet gesztenyebarnára színezi, amelynek center nevű osztálykijelölője van.

.center {
    background: maroon;
}

A formázott weboldal itt tekinthető meg. A dokumentumfával szemléltetve, a fenti stíluslap ezeket az elemeket formázta:

DOM szerkezet

Azonosítókijelölők

Azonos nevű class attribútumból akármennyi lehet, de id attribútumból csak egyfajta érték fordulhat elő egy HTML dokumentumon belül.

Az id attribútum arra való, hogy egyértelműen azonosítson egy címkét, ezért két id ugyanolyan értékkel nem fordulhat elő egy oldalon belül. Az id-nek Javascriptben több jelentősége van, ott ennek segítségével tudunk egy elemre hivatkozni. Valójában az id attribútum ugyanarra kell, mint a class attribútum: ezekkel jelölhetünk meg egy-egy címkét.

Így kell megadni a HTML kódban:

<h1 id="piros">Piros színű címsor</h1>
<h1 id="kek">
Kék színű címsor</h1>

A stíluslapban pedig így tudunk bizonyos nevű id-ra stílust alkalmazni:

h1#piros {
    color: red;
}

h2#kek {
    color: blue;
}

Ez ugyanaz, mintha az alábbi kódot írtuk volna. Ugyanis ez a két meghatározás az összes piros és kek id értékkel ellátott elemre hivatkozik, de csak egy-egy olyan elem van, amely ennek megfelel. Ugyanis az id két azonos értékkel nem fordulhat elő egy HTML oldalon belül.

#piros {
    color: red;
}

#kek {
    color: blue;
}

Kijelölés attribútum alapján

Egy formázandó elemet az alapján is kijelölhetünk, hogy milyen attribútumot adtunk meg hozzá.

A példánkban két olyan link, azaz a címke van, amelyekhez megadtuk a title attribútumot (értéke az a szöveg, ami akkor jelenik meg, ha az egérmutató pihentetjük az adott linken). Az alábbi stíluslap az összes olyan linkre vonatkozik, amelynek van title attribútuma, bármi legyen is az értéke.

a[title] {
    background: lime;
}

A formázott weboldal itt tekinthető meg.

Egy formázandó elemet az attribútuma értéke alapján is kiválaszthatunk. A most következő stíluslap az összes olyan linket kiválasztja, amelynek van title attribútuma, és az értéke pontosan title="A".

a[title="A"] {
    background: lime;
}

A formázott weboldal itt tekinthető meg.

Testvérek kijelölése

Az alábbi stílus csak az olyan h2-es címsorra vonatkozik, amelyik közvetlenül egy h1-es címsor után következik, és egymás testvérei. Ez olyankor hasznos, amikor a főcím és az alcím között nagyobb sorközt kívánunk megadni.

h1 + h2 {
    background: lime;
}

A formázott weboldal itt tekinthető meg.

Ezt lehet kombinálni akár az osztálykijelölővel, és akár három elem egymáshoz képesti helyzete alapján is formázhatunk:

h1.center + h2 + h3 {
    background: lime;
}

Gyermekek kijelölése

A body > h2 kijelölő az összes olyan h2 elemre vonatkozik, amelyek gyermekei a body elemnek. Ha egy h2 elem csak leszármazotta, de nem gyermeke a body elemnek, akkor nem vonatkozik rá a stílus.

body > h2 {
    background: lime;
}

A formázott weboldal itt tekinthető meg.

A kijelölés attribútum alapján, a gyermekek és testvérek kijelölése szabályok sajnos nem működnek Internet Explorer 6 alatt, de Internet Explorer 7 és más böngészők alatt viszont már igen.

Öröklődés

Ha beállítunk egy tulajdonságot egy ős elemre, akkor ez a tulajdonság öröklődhet a leszármazottkra is.

Példánkban két div elem van. Ha ezekre beállítunk egy tulajdonságot, akkor a leszármazottai is öröklik a beállított tulajdonságot.

div {
    background: lime;
}

Az összes div leszármazotta zöld hátterű lesz, mert ez a tulajdonság öröklődik.

A formázott weboldal itt tekinthető meg. A dokumentumfával szemléltetve, a fenti stíluslap ezeket az elemeket formázta:

DOM szerkezet

Néha ez a kijelölés túl általános nekünk. Ehelyett például megadhatjuk, hogy az egymásba ágyazott listáink hogyan jelenjenek meg. Az alábbi stíluslap pontosan arra a listára vonatkozik, ami maga is egy listában van benne, azaz beágyazott lista. Figyeljük meg, hogy szóköz van a két kijelölő között! Ha vesszőt teszünk, az mást jelent, lásd fent.

ul ul {
    background: lime;
}

A formázott weboldal itt tekinthető meg. A dokumentumfával szemléltetve, a fenti stíluslap ezeket az elemeket formázta:

DOM szerkezet

Ezt a jelölést is kombinálhatjuk az azonosító- és osztálykijelölőkkel, és tetszőleges mélységig választhatunk ki elemeket. Erre következik egy példa.

#menu ul ul {
    background: lime;
}

A formázott weboldal itt tekinthető meg. A dokumentumfával szemléltetve, a fenti stíluslap ezeket az elemeket formázta:

DOM szerkezet

Ajánlott linkek

Kijelölők a CSS-ben, angolul: http://www.w3.org/TR/CSS21/selector.html

Tartalomjegyzék Impresszum, szerzői jogok