A doboz-modell

A weboldalon elhelyezett objektumok megjelenését írja le a doboz-modell. Eszerint minden, ami megjelenik, egy téglalap alakú dobozban helyezkedik el. Ennek a doboznak különböző méretei vannak, amelyek a hozzájuk tartozó tulajdonságokkal szabályozhatók. A doboznak a belsejében található a ténylegesen megjelenítendő objektum – az elem tartalma.

A dobozok egymásba pakolhatóak. Ebben az esetben a belső doboznak a méreteit a külső doboz korlátozza. Ugyanakkor több doboz kerülhet egymás mellé is, amely esetben szintén befolyásolhatják egymás méreteit. Ritka esetekben előfordulhat az is, hogy egyik doboz átnyúlik a szomszédos dobozba.

A weboldal egésze is egy dobozban található, amely általában a HTML vagy a BODY elemhez tartozik. A dokumentumban szereplő minden további objektum doboza ebbe a dobozba kerül bele.

A HTML elemek egyik része blokk-szintű, másik része sorbeli elem. Ezek megkülönböztetése szintén összefügg a dobozokkal:

  1. Blokk-szintű (block-level) elemekhez önálló doboz tartozik, amely rendelkezik margóval, kerettel, és a kereten belüli belső margóval. Amennyiben az elem tartalma szöveg, akkor az sordobozokba rendeződik.
  2. A sordobozok nem rendelkeznek sem belső sem külső margóval. Ezek tulajdonképpen a bekezdés sorait jelentik: egymás alá kerülnek a dobozon belül, annak teljes szélességét kitöltve a doboz belső margóján belül.
  3. A sorbeli elemek (inline-level elements) rendelkezhetnek önálló dobozzal, amely kerettel is ellátható, azonban ez a doboz mindig egy sordobozba kerül.

A következőkben egy doboz részeit vesszük sorra a hozzájuk tartozó tulajdonságokkal együtt. A doboz felépítését a következő ábra szemlélteti:

Mint a képen látható, a legbelső, a tényleges tartalmat rejtő dobozt még három réteg veszi körbe – mindhárom szélessége lehet nulla is. A legbelső ezek közül a belső margó (angolul padding), amelynek szélességével lehet beállítani a szöveg és a keret közötti távolságot például. Ezután következik a keret (border), majd ezen kívül, a valódi margó (margin). Mindhárom felosztható felső, alsó, jobb- illetve baloldali részre.

Ahogy a képen is látható, az egyes részek találkozási pontját élnek (edge) nevezzük. Ebből leginkább a legbelső és a legkülső a fontos: a legkülsőn belül található az elem tartalma, amihez a doboz tartozik; a legkülső bedig a doboz külső határa, amelynél a szomszédos dobozokkal érintkezik. Amennyiben valamelyik határolóterület szélessége nulla, akkor a kétoldalán található él egybeesik.

A legbelső él által körülvett téglalapot (a tartalom van ebben) nevezzük belső doboznak, a legkülső él által megadott téglalapot külső doboznak.

A belső doboz szélességét a width tulajdonság, magasságát a height tulajdonság adja meg. A külső doboz – vagyis a teljes doboz – szélességét illetve magasságát akkor kapjuk meg, ha ehhez a két megfelelő oldal belső margójának, keretének és margójának szélességét is hozzáadjuk.

Tehát a doboz teljes szélessége a jobb- és baloldali margó, keret és belső margó szélességének, valamint a belső doboz szélességének összege. A doboz teljes magassága pedig a felső és az alsó margó, keret és belső margó szélességének és a belső doboz magasságának összege.

A doboz egyes részeinek háttere a következőképpen alakul:

A következő – a szabványban szereplő példa – megmutatja a doboz elemeit. Ebben megfigyelhető a belső margó és a külső margó határa az eltérő színek segítségével.

Ez valahogy így nézne ki:

Ahogy látható, a listát körülvevő 1em méretű zöld sáv a listaelemek margója, amely a listát tartalmazó doboz belső éléig tart.

A margóra vonatkozó tulajdonságok

A margó szélességének állítása oldalanként lehetséges a margin-top, margin-right, margin-bottom és a margin-left tulajdonságokkal, amelyek rendre a felső, a jobboldali, az alsó és a baloldali margó szélességét állítják. Ezek helyett alkalmazhatjük a négy oldalon a margó egyszerre történő beállítására a margin tulajdonságot.

A szélességértékek esetében a százalék megadása a belső doboz szélességének százaléka lesz még akkor is, ha a felső vagy az alsó margóról van szó. Ez alól az egyetlen kivétel, ha a megjelenítés lapokra bontva történik.

Mint már említettük, a margón a mögötte levő, az elemet tartalmazó dobozhoz beállított háttér átlátszik, így a margónak színt megadni nem lehet.

Szomszédos dobozok margói

Szomszédos dobozok margói esetében, ha a margók között más nincs, elképzelhető, hogy azok egyetlen margóvá egyesülnek. A vízszintesen szomszédos margókkal ez soha nem következik be, ellenben a függőlegesen szomszédos margóknál a következők igazak:

Belső margók tulajdonságai

A margókhoz hasonlóan a belső margók szélessége is oldalanként adható meg a padding-top, padding-right, padding-bottom és padding-left tuladjonságokkal, vagy egyszerre mind a négy oldali a padding tulajdonsággal.

A szélességnél a százalék használata ezúttal is a belső doboz szélességéhez relatív értéket eredményez. Ellentétben a margókkal, amelyek akár negatívak is lehetnek, a belső margó soha nem lehet negatív értékű.

A belső margó területén látható színt vagy képet az elem background... tulajdonságai határozzák meg, mivel ez megegyezik az elem tartalmánál megjelenő háttérrel.

Keret tulajdonságai

A keretek megadását a margóhoz és a belső margóhoz képest több tulajdonság teszi lehetővé, mivel a színét és a stílusát is meg kell adni a szélességén kívül.

Szélesség

A keret szélessége is oldalanként állítható, ha a border-width tulajdonság helyett a border-?-width tulajdonságok valamelyikét használjuk, ahol a kérdőjel helyén a top (felső), bottom (alsó), right (jobb), left (bal) szavak valamelyike áll.

Szín

Szintén oldalanként vagy egyben állítható be. Ezúttal a border-color tulajdonság állítja be mind a négy oldalt, és a border-?-color alakú tulajdonságokba a kérdőjel helyére a megfelelő oldalt kell beírni az oldalak egyenkénti állítására.

A szokásos színmegadásokon felül szerepelhet még a transparent szó is, amely esetén a keret átlátszó lesz a margóhoz hasonlóan.

Ha nincs megadva a keret színe, akkor az elem betűszínét megadó color tulajdonság határozza meg az alkalmazott színt.

Stílus

A keret stílusa is oldalanként adható meg a fentiekhez hasonlóan a border-?-style kérdőjele helyére a megfelelő oldalt megadva, vagy egyszerre mind a négy oldalon a border-style tulajdonsággal.

A keret stílusa sokféle lehet, azonban egyes régebbi böngészők csak az egyszerűbbeket ismerik. Ezeknél a bonyolultabb keretek sima folytonos vonalként szoktak megjelenni. A következőkben felsoroljuk a lehetséges kereteket:

none
nincs keret; a keret szélessége automatikusan 0 lesz.
hidden
az előzővel azonos, de táblázatoknál más a hatása
dotted
A keret pontok sorozata lesz.
dashed
A keret szaggatott vonal lesz.
solid
A keret folyamatos vonal lesz.
double
A keret dupla folyamatos vonal lesz.
groove
A keret a háttérbe vésettnek tűnik.
ridge
A keret olyan, mintha a háttérből kiemelkedne.
inset
A keret olyanná teszi a dobozt, mintha bele lenne süllyesztve a háttérbe.
outset
A keret olyanná teszi a dobozt, mintha kiemelkedne a háttérből.

Mindegyik keret a doboz háttere fölött látszik, tehát ahol átlátszik a háttér, ott az elem háttere látszik.

A keret fenti három tulajdonsága megadható egyszerre is a border tulajdonsággal mind a négy oldalra, vagy a border-? tulajdonságokkal az egyes oldalakra, ha a kérdőjel helyére a megfelelő oldal nevét írjuk be.




Mindezek után lássuk, hogy a böngésző az egyes dobozokban elhelyezve hogyan fogja megjeleníteni az elemeket. Ezt írja le a formázási modell.

Most, hogy a megjelenítés logikájáról már valamennyi ismerettel rendelkezünk, ismerjük meg a szöveg leírására és formázására szolgáló eszközöket is.

Az elemek csoportba foglalhatók akár egy blokkba, akár egy sor belsejébe helyezve. Erre alkalmasak a csoportosító elemek.