CSS referencia => Formázásmodell CSS, 4. fejezet - Formázásmodell A negyedik fejezet tartalma:
A margó, a szegély és a kitöltés mérete egyenkét meghatározható a margin (5.5.1 - 5.5.5), a border (5.5.11 - 5.5.22) és a padding (5.5.6 - 5.5.10) tulajdonságok értékeinek beállításával. A kitöltőterület hátérszíne megegyezik az elemével, amelyet a background tulajdonság (5.3.2 - 5.3.7) határoz meg. A szegély színe és stílusa szintén a border tulajdonság beállításával határozható meg, míg a margó mindig átlátszó, így a szülő elem állandóan látható marad. A doboz szélessége az elem, a kitöltés, a szegély és a margó területének összege. A formázások szempontjából két elemtípus különböztethető meg: a blokkszintű elem és a soron belüli elem. 4.1 Blokkszintű elemekA következő példa bemutatja, hogyan formázható CSS használatával egy két gyermek-elemet tartalmazó UL elem. A példa egyszerűsítése okán szegélyeket nem definiálunk. Szintén ez okból használjuk értékekként az ABC kis- és nagybetűit, amelyek nem szabványos CSS meghatározások, de ebben az esetben használatuk megkönnyíti a táblázat és a példastílus összevetését.
Itt ténylegesen kipróbálható a fenti példa konkrét értékekkel. Gyakorlatilag, a kitöltés és a margó tulajdonságai nem öröklődnek. De, ahogy a példa is mutatja, az elemek szülőkhöz és 'testvérekhez' (velük egyenrangúakhoz) viszonyított elhelyezkedése lényeges, mert ezeknek az elemeknek kitöltés- és margótulajdonságai hatást gyakorolnak a gyermek elemekre. Ha az előző példában lettek volna szegélyek is, azokat a kitöltés és a margó között kellett volna megjeleníteni. A következő ábra a dobozmodell használatakor érvényes terminológiáról nyújt áttekintést: A jelölések fordítása szándékosan maradt el, ugyanis ugyanezek a kifejezések szerepelnek a CSS nyelvtanában is. Azok kedvéért, akik számára az angol nyelv bizonyos nehézséget okoz, az alábbiakban rövid szószedetet teszünk közzé:
E kis kitérő után térjünk vissza a dobozmodellhez: A bal külső él a formázott elem bal széle; a hozzá tartozó kitöltéssel, szegéllyel és margóval. A bal belső él pedig magának a tartalomnak a szélét jelenti, kitöltés, szegély és margó nélkül. A jobb oldal ennek tükörképe. Ugyanez a szabály érvényes az elem csúcsára (top) és aljára (bottom). Egy elem szélességén a tartalom szélességét értjük, vagyis a bal belső él és a jobb belső él közti távolságot. Az elem magasságán pedig a tartalom magasságát, azaz a rajzon inner top és inner bottom kifejezéssel jelölt magasságok közti távolságot. 4.1.1 Függőleges formázásA nem 'lebegő' blokkszintű elemek margószélessége határozza meg az őt körülvevő doboz szélei közti minimális távolságot. Két, vagy több összevont szomszédos margó (értsd: nincs köztük szegély, kitöltés, vagy tartalom) közösen használja a stíluslapban meghatározott legnagyobb 'margin' értéket. A legtöbb esetben a függőleges margók összevonás után vizuálisan kellemesebb látványt nyújtanak, mint amit a tervező gondolt. Az előbbi példában a két LI elem közötti margó van összevonva, és közösen használják az első LI elem 'margin-bottom' és a második LI elem 'margin-top' tulajdonsága közül a nagyobbat. Hasonlóképpen; ha az UL elem és az első LI elem közti kitöltés (padding - az E jelű konstans) 0 értékű, az UL elem és az első LI elem közti margó összevonódik. 4.1.2 Vízszintes formázásA nem 'lebegő' blokkszintű elemek vízszintes pozícióját és méretét hét tulajdonság határozza meg: a 'margin-left', 'border-left', 'padding-left', 'width', 'padding-right', 'border-right', 'margin-right'. Ezen tulajdonságok értékeinek összege mindig megegyezik a szülő elem 'width' értékével. Alapértelmezésben egy elem szélességének értéke 'auto'. Ha az elem nem
helyettesített elem, a szélesség értékét a böngésző számolja ki, a fent
említett hét tulajdonság értékének összegzésével. Ha az elem
helyettesített elem, 'width' tulajdonságának 'auto' értéke automatikusan
kicserélődik az elem saját szélesség-értékére. A 'width' tulajdonságnak van egy nem negatív, böngésző által meghatározott minimum értéke (amely elemenként változik és mindig másik tulajdonságtól függ). Ha a 'width' értéke e határérték alá kerül, akár azért, mert így lett beállítva, vagy mert értéke 'auto' volt és az alábbi szabályok miatt vált értéke túl alacsonnyá, értéke kicserélődik a minimumként használható értékkel. Ha pontosan egy 'margin-left', 'width', vagy 'margin-right' értéke 'auto'; a böngésző ennek értékét úgy állítja be, hogy kiadja a fentebb felsorolt hét tulajdonsághoz tartozó maradék értéket; amennyi szükséges a szülő elem szélességének eléréséhez. Ha a tulajdonságok közül egyik sem 'auto'; a 'margin-right' tulajdoság értéke lesz 'auto'. Ha a háromból egynél több 'auto' és közülük egyik a 'width'; a többi tulajdonság ('margin-left' és/vagy 'margin-right') értéke nullára lesz állítva, és a 'width' kapja meg azt az értéket, amennyi szükséges a szülő elem szélességének eléréséhez. Abban az esetben, ha a 'margin-left', és 'margin-right' tulajdonságok vannak 'auto' -ra állítva, mindkettő egyenlő értéket kap. A függőleges margókkal ellentétben, a vízszintes margók nem összevonhatók. 4.1.3 ListaelemekAzok az elemek, amelyek 'list-item' tulajdonságának értéke 'display', blokkszintű elemekként formázódnak, és listajelölő előzi meg őket. A jelölő típusát a list-style tulajdonság határozza meg. A list-style tulajdonság értéke szerint a jelölő elhelyezkedése az alábbi lehet: A fenti példát a böngésző így jeleníti meg: Jobbról-balra értelmezendő szövegek esetében értelemszerűen a listajelölő a doboz jobb oldalára kerül. 4.1.4 Lebegő elemekA 'float' tulajdonság alkalmazásával egy elem elhelyezkedése meghatározható az elemek által általában elfoglalt helyek oldalsó vonalán kívül is; ez esetben formázásuk módja a blokkszintű elemekéhez hasonló. Példaként: ha egy kép 'float' tulajdonságát 'left' (bal) értékre állítjuk be, eredményképpen a kép addig tolódik balra, míg egy másik blokkszintű elem margóját, kitöltését, vagy szegélyét el nem éri. Jobb oldalán a lap többi tartalma fogja körbefutni. Az elem margói, szegélyei, kitöltései megmaradnak, de margói a szomszédos elem margóival sosem lesznek összevonva. A lebegő elemek pozicionálása a következő szabályok szerint történik (a kifejezések magyarázatás lásd a 4.1 pontban)
A fenti példaszöveg formázása a következőképp alakul:
Megjegyzés: a lebegő IMG elemet a P elem tartalmazza, tehát jelen esetben az a szülő elem. Van két olyan eset, amikor egy lebegő elemek margó-, szegély-, és kitöltő területei átfedhetik egymást:
4.2 Soron belüli elemekAzok az elemek, amelyek nem formázhatók blokkszintű elemként; a soron belüli elemek. Egy soron belül használható több soron belüli elem is. Figyeljük meg a példát: <P>Néhány <EM>kiemelt</EM> szó
jelenik meg a <STRONG>sorban</STRONG>
A P elem általánosan használt blokkszintű elem, míg az EM és a STRONG soron belüli elemek. Ha a P elem szélessége egy egész sort kitölt, akkor abban a sorban két soron belüli elem is található lesz. Néhány kiemelt szó jelenik meg a sorban Ha a P elem szélessége több, mint egy sort foglal el, a soron belüli elem 'doboza' felosztódik a két sor között: <P>Néhány <EM>kiemelt
szó jelenik</EM> meg; a sorban Néhány kiemelt szó jelenik meg a sorban. Ha egy soron belüli elemhez margó, szegély, kitöltés, vagy szövegdekoráció van rendelve, ezek nem lesznek hatással a sortörésre. A fenti példa 'doboza' valahogy így néz ki:
(Fenti "rajz" meglehetősen egyszerűsített és torzított; ennek oka, hogy egyszerű ASCII karaktereket lehessen használni az ábrázoláshoz. A sormagasságok kiszámításához lásd a 4.4 Fejezetet.) 4.3 Helyettesített elemekA helyettesített elem olyan elem, amely megjelenítésekor avval a
tartalommal van helyettesítve, amelyre hivatkozásként mutat. Például a egy
HTML kódban szereplő IMG elem az SRC attribútumában szereplő
képpel lesz megjelnésekor helyettesítve. Ilyenkor a helyettesített elemek
magukkal hozzák saját méreteiket is. Ha a width értéke auto,
az elem szélességét megjelenítésekor saját szélessége határozza meg. Ha
stíluslapon keresztül más (nem auto) érték van meghatározva, a
helyettesített elem azzal az értékkel kerül megjelenítésre. (A méretezési
eljárás a média típusától függ.) A height tulajdonságra hasonló
szabályok vonatkoznak. 4.4 Sorok magasságaMinden elemnek van line-height, azaz sormagasság tulajdonsága, amely egy szövegsor teljes megasságát adja meg. A szövegsor teljes megasságát a szöveg és az alá-fölé elhelyezett üres helyek összessége adja meg. Példaként: ha egy szöveg 12pt magas, és a line-height értéke 14pt; két képpontnyi üres hely adódik hozzá a betűmérethez: egy képpont a sor fölé, egy képpont alá. A betűméret és a sormagasság közti különbséget vezetésnek nevezzük. A vezetés-érték fele a fél-vezetés. Formázáskor minden szövegsor egy-egy sordobozként értelmezhető. Ha a szövegsor egyes részei különböző magasság-értékeket tartalmaznak
(több különböző soron belüli elem), akkor minden egyes résznek megvan a
maga saját vezetés-értéke is. A sordoboz magasságát a legmagasabb rész
tetejétől a legmélyebbre érő rész legaljáig mérjük. Megjegyzendő, hogy a
'legmagasabb' és a 'legmélyebb'értékek nem szükségszerűen tartoznak
ugyanazon elemhez, mivel az elemek függőleges pozicionálása a
vertical-align tulajdonság beállításával történik. A sorban található helyettesített elemek (pl.: képek) megnövelhetik a sordoboz magasságát, ha a helyettesített elem teteje (beleétve a hozzá tartozó kitöltést, szegélyt, margót is) a legmagasabb szövegrész fölé, illetve alja a legalacsonyabbra érő szövegrész alá ér. Általános esetben, amikor amikor az egész bekezdésnek egy line-height értéke van, és nincsenek nagyobb méretű képek, a fenti szabályleírás biztosan meghatározza, hogy a párhuzamos sorok alapvonalai pontosan a line-height tulajdonságban megadott értékre legyenek egymástól. 4.5 A VászonA fordítás során sokat gondolkodtam, miképp magyarítsam a 'Canvas' szót. A canvas ismerősen hangozhat a programozással foglalkozóknak; azt a felületet jelenti, amire egy program karaktereket, grafikonokat, stb... kirajzolhat, ugyanúgy, mint a festő a vásznára. Így végül maradtam a szó szerinti fordításnál: CANVAS - VÁSZON. A Vászon (CANVAS) a böngészőfelület azon része, amelyre a dokumentum és beágyazott elemei kirajzolódnak. A vászon nem a dokumentum strukturáló elemeinek felel meg, és ez a dokumentum formázása során két fontos kérdést vet fel.
Az első kérdésre adható válasz az, hogy a vászon kezdeti szélessége a böngészőablak méretén alapul, de a CSS a pontos méretbeállítást a böngészőre hagyja. Ésszerű a böngészőre hagyni a vászon méretének megváltoztatását az ablak átméretezésekor is, mert ez szintén kívül esik a CSS hatókörén. A HTML kiterjesztései szolgáltatnak példát a második kérdés megválaszolásához: A BODY elem attribútumai állítják be a hátteret; az egész vászonra vonatkozóan. A laptervezők elvárásainak támogatására a CSS-ben bevezetésre került egy, a vászon hátterére vonatkozó szabály: Ha a HTML elem background értéke nem transparent, akkor az kerül használatba, egyébként pedig a BODY elem background attribútuma. Fenti szabály használat közben a következőképp jelenhet meg: <HTML STYLE="background:
url(http://style.com/hatter.jpg)">
A példában a vászont beteríti a 'hatter.jpg' nevű kép. A BODY elem háttérszíne pedig (amely nem biztos, hogy teljesen lefedi a vászont), vörös lesz. Ajánlott a vászon tulajdonságait a 'BODY' elemen keresztül beállítani. 4.6 'BR' elemekAz aktuális CSS tulajdonságok és értékek nem írják le a BR elemek viselkedését. A HTML-ben a BR elem két szó közötti sortörést határoz meg. A gyakorlatban az elem egy sortöréssel van helyettesítve. A CSS jövőbeni verzióiban ez várhatóan változni fog. | ||||||||||||||||||||||||||||