Tananyag
17. lecke · A dobozmodell

3. modul · CSS alapok · 17. lecke

A dobozmodell

A 11. leckében azt mondtuk: próbálj dobozokat látni az oldalon. Most megtanulod, miből áll egy doboz, hogyan számolja ki a böngésző a méretét, és hogyan adsz neki térközt, keretet, lekerekítést és árnyékot. Ez a CSS-elrendezés alapja — minden, ami ezután jön, erre épül.

≈ 40 perc Előtte: 11–16. lecke 12 élő példa

Mit fogsz tudni a lecke végén

1Minden elem egy doboz

A böngésző minden elemet egy téglalapként rajzol ki — a bekezdést, a címsort, a képet, a linket is. Ez a téglalap négy, egymásba ágyazott rétegből áll, belülről kifelé haladva:

TARTALOM külső térköz margin · átlátszó keret border belső térköz padding · a háttér látszik tartalom width × height
A négy réteg belülről kifelé: tartalom → belső térköz → keret → külső térköz.
RétegTulajdonságMire való?
Tartalomwidth, heightMaga a szöveg, kép — ennek a méretét állítod.
Belső térközpaddingHely a tartalom és a keret között. Itt még látszik a háttérszín.
KeretborderVonal a doboz körül.
Külső térközmarginTávolság a többi elemtől. Mindig átlátszó.
A négy réteg láthatóvá téve
index.html
<div class="kulso">
  <p class="doboz">Ez a tartalom.</p>
</div>
style.css
/* csak azért, hogy a margó látsszon */
.kulso {
  background-color: #fef3c7;
  border: 1px dashed #d97706;
}

.doboz {
  background-color: #dcfce7;
  padding: 24px;
  border: 8px solid #be123c;
  margin: 30px;
}
Eredmény a böngészőben
A zöld terület a tartalom és a belső térköz (a háttérszín mindkettő mögött ott van), a bordó sáv a keret, a sárga sáv körülötte pedig a külső térköz — az valójában átlátszó, csak a szülő háttere látszik át rajta.
PADDING VAGY MARGIN? A DÖNTÉSI KÉRDÉS

„A térköz a doboz része legyen, vagy a dobozon kívül?" Ha a háttérszínnek és a keretnek körbe kell fognia a helyet — például egy gomb belsejében —, akkor padding. Ha két doboz között kell hely, akkor margin.

2Belső térköz: padding

A padding tulajdonság „levegőt" ad a tartalomnak. Enélkül a szöveg a keretnek vagy a háttér szélének ütközik. Megadhatod oldalanként is:

padding-top: 10px;
padding-right: 20px;
padding-bottom: 10px;
padding-left: 20px;

A rövidítés: egy, kettő, három vagy négy érték

A négy sort egyetlen padding sorba is összevonhatod:

ÍrásmódJelentése
padding: 20px;Mind a négy oldal 20 px
padding: 10px 20px;Fent-lent 10 px, jobbra-balra 20 px
padding: 10px 20px 30px;Fent 10, jobbra-balra 20, lent 30
padding: 10px 20px 30px 40px;Fent 10, jobbra 20, lent 30, balra 40
1. fent 2. jobbra 3. lent 4. balra óramutató szerint
A négy értékes forma fentről indul, és az óramutató járása szerint halad körbe.
A rövidítések működés közben
index.html
<p class="p1">padding: 20px</p>
<p class="p2">padding: 6px 40px</p>
<p class="p4">padding: 0 0 20px 60px</p>
style.css
p {
  background-color: #fce7f3;
  border: 2px solid #be123c;
  margin: 0 0 10px;
}

.p1 { padding: 20px; }
.p2 { padding: 6px 40px; }
.p4 { padding: 0 0 20px 60px; }
Eredmény a böngészőben
A harmadiknál a szöveg fent a keretnek ütközik (0), alul 20 px hely van, balra pedig 60 px. A rövidítést csak meg kell szokni — utána sokkal gyorsabb.
A GOMB TITKA: em EGYSÉG

A 16. leckében ígértük: egy gomb belső térközét érdemes em egységben megadni, például padding: 0.5em 1.2em. Így ha a gomb betűmérete nő, a belső tér is vele arányosan nő — a gomb nem lesz „szorult".

3Keret: border

A keretnek három jellemzője van: vastagság, stílus és szín. A rövidítés mindhármat egy sorban adja meg:

border: 2px solid #be123c;
/*      │   │     └─ szín
        │   └─ stílus
        └─ vastagság */
Keretstílusok — és egy csapda
index.html
<p class="solid">solid</p>
<p class="dashed">dashed</p>
<p class="dotted">dotted</p>
<p class="double">double</p>
<p class="csapda">border: 4px #be123c — hol a keret?</p>
style.css
p {
  padding: 6px 10px;
  margin: 0 0 8px;
}

.solid  { border: 4px solid #be123c; }
.dashed { border: 4px dashed #be123c; }
.dotted { border: 4px dotted #be123c; }
.double { border: 6px double #be123c; }

/* HIÁNYZIK A STÍLUS! */
.csapda { border: 4px #be123c; }
Eredmény a böngészőben
Az utolsó bekezdésnek nincs kerete, pedig megadtuk a vastagságot és a színt is. A keret stílusának alapértéke ugyanis nonestílus nélkül a keret nem jelenik meg.
A STÍLUS KÖTELEZŐ

Ez a keret leggyakoribb hibája. A vastagság és a szín elhagyható (van alapértékük), de a stílus nem. Ha a kereted „nem jelenik meg", először azt nézd meg, ott van-e a solid, dashed vagy dotted szó.

Csak egy oldalra

A keret oldalanként is megadható: border-top, border-right, border-bottom, border-left. Ez nagyon gyakori díszítő elem.

Oldalsó és alsó keret mint díszítés
index.html
<h2 class="cim">Címsor aláhúzással</h2>

<p class="idezet">
  „A jó dizájn az, amit észre sem veszel."
</p>

<p class="figyelem">
  Figyelem: a jelentkezés péntekig tart.
</p>
style.css
.cim {
  border-bottom: 3px solid #fb7185;
  padding-bottom: 6px;
}

.idezet {
  border-left: 4px solid #9ca3af;
  padding-left: 14px;
  font-style: italic;
  color: #52525b;
}

.figyelem {
  border-left: 6px solid #d97706;
  background-color: #fef3c7;
  padding: 10px 14px;
}
Eredmény a böngészőben
Figyeld meg, mennyire kell a padding: az idézetnél és a figyelmeztetésnél e nélkül a szöveg rátapadna a keretvonalra.

4Külső térköz: margin

A margin tulajdonság a doboz körüli helyet adja meg — a távolságot a szomszédoktól. Ugyanúgy működik, mint a padding: oldalanként (margin-top …) vagy egy–négy értékes rövidítéssel.

Különbségpaddingmargin
Hol van?a kereten belüla kereten kívül
Látszik rajta a háttérszín?igennem, átlátszó
Lehet negatív?nemigen
Lehet auto?nemigen
A BÖNGÉSZŐ IS AD MARGÓT

A body elemnek alapból 8 px külső térköze van, a bekezdéseknek és a címsoroknak felül-alul szintén. Ezért „lóg be" néha egy váratlan hely az oldal szélén vagy egy címsor fölött. Sok stíluslap ezzel indul: body { margin: 0; } — és utána maga adja meg a kívánt térközöket.

Doboz vízszintesen középre: margin: 0 auto

A 16. leckében ígértük, hogy megmutatjuk, hogyan kerül egy doboz középre (a text-align csak a tartalmát igazítja). A megoldás két feltétel:

  1. A doboznak legyen megadott szélessége (width vagy max-width) — különben kitölti a helyet, és nincs mit középre tenni.
  2. A bal és jobb külső térköz legyen auto — a böngésző ilyenkor egyenlően osztja szét a maradék helyet.
Középre tett oldaltartalom
index.html
<div class="oldal">
  <h2>Középre tett tartalom</h2>
  <p>A max-width miatt nem nyúlik szét,
  és a két oldalán egyforma a hely.</p>
</div>

<p class="rossz">text-align: center — csak a
szöveg van középen, a doboz nem.</p>
style.css
.oldal {
  max-width: 300px;
  margin: 0 auto;
  background-color: #fce7f3;
  padding: 10px 16px;
}

.rossz {
  text-align: center;
  background-color: #e5e7eb;
  padding: 10px;
}
Eredmény a böngészőben
A rózsaszín doboz maga került középre, a szürke bekezdés viszont a teljes szélességet kitölti — benne csak a szöveg van középre igazítva. Ez a két módszer nem cserélhető fel.
EZT MINDEN WEBOLDAL HASZNÁLJA

A legtöbb oldal tartalma egy .oldal vagy .tartalom nevű dobozban van max-width: 1000px; margin: 0 auto; beállítással. Nagy képernyőn így a tartalom középen marad és nem nyúlik szét, kis képernyőn pedig kitölti a helyet. Csak vízszintesen működik — függőleges középre igazításhoz a Flexbox kell (20. lecke).

5Szélesség és magasság

Blokkszintű elemnél a width alapértéke auto: a doboz kitölti a szülő teljes szélességét. A height alapértéke szintén auto: a doboz olyan magas, amilyen a tartalma.

TulajdonságMire való?
width / heightPontos méret. Magasságot ritkán adunk meg — ha a tartalom nő, kilóg (11. pont).
max-width„Legfeljebb ekkora" — kisebb képernyőn összehúzódhat. A legtöbbször ez kell a width helyett.
min-width„Legalább ekkora."
min-height„Legalább ekkora magas, de nőhet" — ez a biztonságos magasság-megadás.
MIÉRT JOBB A max-width?

A width: 800px egy 400 px széles telefonon kilóg a képernyőből, és oldalra kell görgetni. A max-width: 800px ugyanezen a telefonon egyszerűen 400 px lesz. Nagy képernyőn a kettő ugyanúgy néz ki. Ezt a gondolatot a 22. leckében (reszponzív design) visszük tovább.

6A box-sizing tulajdonság

Most jön a dobozmodell legmeglepőbb része. Mekkora lesz ez a doboz?

.doboz {
  width: 200px;
  padding: 20px;
  border: 5px solid #be123c;
}

A legtöbben azt mondják: 200 képpont. Valójában 250. A böngésző alapból úgy számol, hogy a width csak a tartalom szélessége, és ehhez hozzáadja a belső térközt és a keretet:

ÖsszetevőKéppont
bal keret5
bal belső térköz20
tartalom (a width)200
jobb belső térköz20
jobb keret5
A doboz valódi szélessége250

Ezt a számolási módot hívják content-box módnak. Van egy másik is, a border-box: ilyenkor a width a keretet is magában foglalja, és a böngésző a tartalmat húzza össze.

Ugyanazok a számok, kétféle box-sizing
index.html
<div class="vonalzo"></div>
<p>↑ ez a zöld vonal pontosan 200 px</p>

<div class="doboz content">content-box</div>

<div class="doboz border">border-box</div>
style.css
.vonalzo {
  width: 200px;
  height: 6px;
  background-color: #16a34a;
}
p { margin: 2px 0 12px; font-size: 13px; }

.doboz {
  width: 200px;
  padding: 20px;
  border: 5px solid #be123c;
  background-color: #fce7f3;
  margin-bottom: 10px;
}

.content { box-sizing: content-box; }
.border  { box-sizing: border-box; }
Eredmény a böngészőben
A felső doboz túlnyúlik a zöld vonalzón (250 px), az alsó pontosan vele egyforma (200 px). Mindkettőnél width: 200px áll a kódban.
EZÉRT ÍRJA MINDENKI EZT A SZABÁLYT

A 13. leckében ígértük a magyarázatot. Íme a szabály, ami szinte minden stíluslap elején ott van:

*, *::before, *::after {
  box-sizing: border-box;
}

Ezzel minden elem border-box módra vált, és a width végre azt jelenti, amit az ember gondol: a doboz teljes szélességét. Ha belső térközt vagy keretet adsz hozzá, a doboz nem nő meg — a tartalom húzódik össze. Így sokkal egyszerűbb elrendezést építeni.

A TANANYAGBAN INNENTŐL

Minden gyakorlófeladat stíluslapja ezzel a szabállyal kezdődjön. A margin tulajdonságot a border-box sem számolja bele — a külső térköz mindig a dobozon kívül marad.

7Margó-összeolvadás

Van egy szabály, ami mindenkit meglep először: két egymás alatti blokk függőleges külső térköze nem adódik össze, hanem összeolvad — és csak a nagyobbik marad meg.

30 px + 20 px = ?
index.html
<div class="felso">margin-bottom: 30px</div>
<div class="also">margin-top: 20px</div>

<div class="meroszalag">
  <div class="m30">30 px</div>
  <div class="m50">50 px</div>
</div>
style.css
.felso, .also {
  padding: 8px 12px;
  background-color: #fce7f3;
  border: 2px solid #be123c;
}
.felso { margin-bottom: 30px; }
.also  { margin-top: 20px; }

/* összehasonlító mérőszalag */
.meroszalag { margin-top: 20px; font-size: 12px; }
.m30, .m50 {
  width: 60px;
  background-color: #16a34a;
  color: white;
  margin-bottom: 4px;
  padding-left: 4px;
}
.m30 { height: 30px; }
.m50 { height: 50px; }
Eredmény a böngészőben
A két doboz közti rés 30 px — pontosan akkora, mint a felső zöld sáv, és nem 50 px. A kisebbik (20 px) margó beleolvadt a nagyobbikba.
MIKOR TÖRTÉNIK, ÉS MIKOR NEM?
  • Csak függőlegesen (felső és alsó margó) — a vízszintes margók mindig összeadódnak.
  • Csak blokkszintű elemeknél, a normál szövegfolyamban. Flexbox és Grid elrendezésben (20–21. lecke) nincs összeolvadás.
  • A szülő és az első gyereke margója is összeolvadhat — ezért „szökik ki" néha egy címsor felső margója a dobozából. Ha a szülőnek van padding vagy border értéke, ez nem történik meg.
A GYAKORLATI MEGOLDÁS

Sokan ezt a szabályt követik: függőleges térközt csak egy irányba adnak — például minden elemnek csak margin-bottom értéket, margin-top értéket soha. Így nincs mi összeolvadjon, és a térközök kiszámíthatók.

8Soron belüli elemek dobozai

A 11. leckében előre jeleztük: a soron belüli elemeken (span, a, strong) a dobozmodell nem egészen úgy működik. Egy soron belüli elem ugyanis a szövegsor része, és nem tolhatja szét a sorokat.

Térközök egy soron belüli elemen
index.html
<p>
  Ez egy hosszabb bekezdés, amelyben van egy
  <span class="cimke">soron belüli címke</span>,
  és látni fogod, hogy a felső és alsó
  térköz nem tolja el a szomszéd sorokat.
</p>
style.css
p {
  max-width: 320px;
  line-height: 1.6;
}

.cimke {
  background-color: rgb(190 18 60 / 0.25);
  border: 2px solid #be123c;
  padding: 12px 8px;
  margin: 30px 20px;
  width: 300px;    /* hatástalan */
}
Eredmény a böngészőben
A vízszintes térközök működnek: a címke két oldalán megnőtt a hely. A felső és alsó belső térköz kirajzolódik, de rálóg a szomszéd sorokra, a felső-alsó külső térköz és a width tulajdonság pedig semmit nem csinál.
Soron belüli elemenMűködik?
padding, margin balra-jobbraigen
padding fent-lentkirajzolódik, de nem tolja a sorokat
margin fent-lentnem
width, heightnem
A MEGOLDÁS A KÖVETKEZŐ LECKÉBEN

Ha egy elemnek a sorban kell maradnia, de rendes dobozként kell viselkednie (például egy gombnak kinéző linknek), akkor a display: inline-block beállítás kell — ezt a 18. leckében tanulod meg. (A img elem kivétel: annál a width és a height tulajdonság működik.)

9Lekerekítés: border-radius

A border-radius tulajdonság a doboz sarkait kerekíti le. Keret sem kell hozzá — a háttér is lekerekedik.

Enyhe, erős, kapszula és kör
index.html
<div class="doboz r6">6px</div>
<div class="doboz r20">20px</div>
<div class="doboz kapszula">kapszula</div>
<div class="doboz kor">kör</div>
<div class="doboz egy-sarok">egy sarok</div>
style.css
.doboz {
  background-color: #be123c;
  color: white;
  padding: 10px 16px;
  margin-bottom: 8px;
  max-width: 180px;
}

.r6       { border-radius: 6px; }
.r20      { border-radius: 20px; }
.kapszula { border-radius: 999px; }

.kor {
  width: 80px;
  height: 80px;
  padding: 0;
  border-radius: 50%;
  text-align: center;
  line-height: 80px;
}

.egy-sarok { border-radius: 0 24px 0 0; }
Eredmény a böngészőben
A kapszula trükkje: egy nagyon nagy érték (999px) — a böngésző úgyis legfeljebb a doboz felét használja fel. A kör egy négyzet 50% lekerekítéssel. Figyeld meg, hogy a belső térközét nullára állítottuk: a belső térköz miatt a doboz téglalap lett volna, és abból ellipszis lesz, nem kör. A sarkok ugyanúgy, az óramutató szerint adhatók meg, mint a térközök — csak a bal felső saroktól indulva.

10Árnyék: box-shadow

A box-shadow tulajdonság árnyékot vet a doboz alá. Az értékek sorrendje:

box-shadow: 0 4px 12px 0 rgb(0 0 0 / 0.15);
/*          │  │    │   │  └─ szín (átlátszóval szép)
            │  │    │   └─ szétterülés (elhagyható)
            │  │    └─ elmosás
            │  └─ függőleges eltolás
            └─ vízszintes eltolás */
Árnyéktípusok
index.html
<div class="kartya kemeny">Kemény árnyék</div>
<div class="kartya puha">Puha, lebegő árnyék</div>
<div class="kartya finom">Finom, alig látható</div>
<div class="kartya belso">Belső árnyék (inset)</div>
style.css
body { background-color: #f4f4f5; }

.kartya {
  background-color: white;
  padding: 14px 18px;
  margin-bottom: 18px;
  border-radius: 10px;
  max-width: 240px;
}

.kemeny { box-shadow: 4px 4px 0 #be123c; }

.puha {
  box-shadow: 0 10px 25px rgb(0 0 0 / 0.18);
}

.finom {
  box-shadow: 0 1px 3px rgb(0 0 0 / 0.12);
}

.belso {
  box-shadow: inset 0 2px 6px rgb(0 0 0 / 0.2);
}
Eredmény a böngészőben
Az elmosás nélküli árnyék éles és játékos, a nagy elmosású lebegést idéz, a kicsi pedig csak elválasztja a kártyát a háttértől. Az inset kulcsszó befelé fordítja az árnyékot, mintha a doboz be lenne nyomva.
AZ ÁRNYÉK LEGYEN VISSZAFOGOTT

Kezdők gyakori hibája a sötét, fekete árnyék: box-shadow: 5px 5px 10px black. Ez nehézkessé teszi az oldalt. A természetes árnyék nagyon átlátszó (10–20%), lefelé esik (a vízszintes eltolás 0), és puha.

NEM FOGLAL HELYET

Az árnyék — a outline tulajdonsághoz hasonlóan (14. lecke) — nem része a doboz méretének, és nem tolja el a szomszédokat. Ha túl közel vannak az elemek, egyszerűen rálóg a mellette lévőre. Ezért kell az árnyékos kártyák közé elég margin.

11Ha nem fér el: overflow

Ha egy dobozt rögzített méretűre állítasz, és a tartalma nagyobb, az kilóg belőle. Az overflow tulajdonság szabja meg, mi történjen ilyenkor.

Ugyanaz a túl hosszú szöveg négyféle overflow értékkel
index.html
<div class="doboz visible">
  <b>visible</b> — Ez a szöveg túl hosszú ehhez
  a kis dobozhoz, és valahol ki kell férnie.
</div>
<div class="doboz hidden">
  <b>hidden</b> — Ez a szöveg túl hosszú ehhez
  a kis dobozhoz, és valahol ki kell férnie.
</div>
<div class="doboz auto">
  <b>auto</b> — Ez a szöveg túl hosszú ehhez
  a kis dobozhoz, és valahol ki kell férnie.
</div>
style.css
.doboz {
  width: 220px;
  height: 52px;
  padding: 6px 10px;
  border: 2px solid #be123c;
  background-color: #fce7f3;
  margin-bottom: 44px;
  font-size: 14px;
}

.visible { overflow: visible; }
.hidden  { overflow: hidden; }
.auto    { overflow: auto; }
Eredmény — a harmadikat görgetheted
Az első dobozból a szöveg kilóg (ez az alapértelmezés), a másodiknál a kilógó rész levágódik és elvész, a harmadikban megjelenik egy görgetősáv.
ÉrtékMit csinál?
visibleKilóg — alapértelmezés
hiddenLevágja — a kilógó tartalom elérhetetlen
autoGörgetősávot tesz, ha szükséges — általában ez a jó választás
scrollMindig görgetősávot tesz, akkor is, ha nem kell
A LEGJOBB OVERFLOW: NEM KELL

A kilógó tartalom oka szinte mindig egy felesleges height érték. Ha nem adsz meg magasságot, a doboz a tartalommal együtt nő, és semmi nem lóg ki. Az overflow tulajdonságra akkor van szükség, ha a rögzített méret tényleg indokolt — például egy görgethető táblázatnál vagy egy kivágott képnél.

12Minden együtt: egy kártya

Rakjuk össze a lecke összes eszközét. Ez a kártya a 11. és a 12. lecke kártyájának továbbfejlesztése — és ilyen kártyákból fog állni az 5. és a 6. gyakorlófeladat is.

Profilkártya a dobozmodell eszközeivel
index.html
<div class="kartya">
  <img class="avatar" src="kepek/profil.jpg"
       alt="Kovács Anna" width="96" height="96">
  <h2>Kovács Anna</h2>
  <p class="szerep">Webfejlesztő tanuló</p>
  <p>Szeretek egyszerű, jól olvasható
  weboldalakat készíteni.</p>
  <a class="gomb" href="#">Kapcsolat</a>
</div>
style.css
*, *::before, *::after {
  box-sizing: border-box;
}

body {
  margin: 0;
  padding: 24px 16px;
  background-color: #f4f4f5;
  font-family: "Segoe UI", Arial, sans-serif;
  line-height: 1.5;
  color: #3a2f35;
}

.kartya {
  max-width: 280px;
  margin: 0 auto;
  padding: 28px 24px;
  background-color: white;
  border-top: 5px solid #be123c;
  border-radius: 14px;
  box-shadow: 0 10px 25px rgb(0 0 0 / 0.10);
  text-align: center;
}

.avatar {
  border-radius: 50%;
  border: 4px solid #fce7f3;
}

.kartya h2 {
  margin: 12px 0 2px;
  font-size: 1.3rem;
}

.szerep {
  margin: 0 0 12px;
  color: #be123c;
  font-weight: 600;
  font-size: 0.9rem;
}

.gomb {
  display: inline-block;
  margin-top: 8px;
  padding: 0.55em 1.4em;
  background-color: #be123c;
  color: white;
  text-decoration: none;
  border-radius: 999px;
}
Eredmény a böngészőben
Minden egyes vizuális részlet a dobozmodellből jön: a középre helyezés (margin: 0 auto), a belső levegő (padding), a felső díszcsík (border-top), a kerek kép és a kapszula gomb (border-radius), a lebegés (box-shadow). A gombon látod a display: inline-block értéket is — ennek a magyarázata a következő lecke.

13Tipikus hibák

HibaMi történik, és mi a megoldás?
Keret stílus nélkül: border: 2px red Nem jelenik meg keret. Kell a stílus: border: 2px solid red.
A doboz szélesebb, mint a megadott width érték A content-box mód hozzáadja a belső térközt és a keretet. Megoldás: box-sizing: border-box minden elemre.
margin: 0 auto nem tesz középre Nincs megadva szélesség (width vagy max-width), vagy az elem soron belüli.
Két elem közötti rés kisebb, mint a két margó összege Nem hiba: margó-összeolvadás. Függőleges térközt csak egy irányba adj.
width vagy felső margó egy span vagy a elemen Soron belüli elemen hatástalan. Megoldás: display: inline-block (18. lecke).
Rögzített height szöveges dobozon Ha több a szöveg, kilóg. Hagyd el a magasságot, vagy használj min-height értéket.
width: 800px a fő tartalomdobozon Telefonon kilóg a képernyőből. Használj max-width értéket.
Térköz a padding helyett margin tulajdonsággal egy gombon belül A háttérszín nem terjed ki a helyre, a gomb „szorult" marad. Belső hely: padding.
Sötét, erős árnyék Nehézkes, régies hatás. Átlátszó (10–20%), lefelé eső, puha árnyék.
A DOBOZMODELL AZ F12-BEN

F12 → jelölj ki egy elemet → a Computed fül tetején ott egy színes dobozábra: a kijelölt elem tartalma, belső térköze, kerete és külső térköze, képpontra pontosan. Ha az egeret egy elem fölé viszed az Elements panelen, a böngésző magán az oldalon is kiszínezi a rétegeket. Ha egy térköz „honnan jön?" kérdés merül fel, ez a leggyorsabb válasz.

Önellenőrző kérdések

Előbb válaszolj magadban, csak utána nézd meg a megoldást.

1. Sorold fel a doboz négy rétegét belülről kifelé!

Tartalom (width/height) → belső térköz (padding) → keret (border) → külső térköz (margin).

2. Mit jelent: margin: 10px 20px 30px;?

Fent 10 px, jobbra és balra 20 px, lent 30 px. A három értékes formában a középső érték vonatkozik mindkét oldalra.

3. Milyen széles ez a doboz alapbeállítással, és milyen széles border-box módban? width: 300px; padding: 15px; border: 5px solid;

Alapbeállítással (content-box): 5 + 15 + 300 + 15 + 5 = 340 px. border-box módban: pontosan 300 px — a tartalom húzódik össze 260 px-re.

4. Megadtad: border: 3px #be123c; — de nem látszik keret. Miért?

Hiányzik a keret stílusa (solid, dashed …). A stílus alapértéke none, ezért stílus nélkül a keret nem jelenik meg.

5. Egy elem margin-bottom: 40px, az alatta lévő margin-top: 25px értékű. Mekkora lesz köztük a rés?

40 px. A függőleges margók összeolvadnak, és csak a nagyobbik marad meg — nem 65 px.

6. Egy div elemre margin: 0 auto szabályt írtál, de nem került középre. Mi hiányozhat?

A szélesség. Megadott width vagy max-width nélkül a blokkszintű doboz kitölti a teljes helyet, így nincs mit elosztani a két oldal között.

7. Egy a elemre margin-top: 20px és width: 200px értéket írtál. Miért nem történik semmi?

Mert az a soron belüli elem: rajta a felső és alsó külső térköz, valamint a width tulajdonság hatástalan. Megoldás a display: inline-block (18. lecke).

8. Mikor használsz padding, és mikor margin tulajdonságot?

padding: ha a hely a doboz része — a háttérszín és a keret körülfogja (például egy gomb vagy kártya belsejében). margin: ha a hely a dobozok között van, a dobozon kívül.

14Összefoglalás

  1. Minden elem egy doboz, négy réteggel: tartalom → paddingbordermargin.
  2. padding: belső térköz, látszik rajta a háttér · margin: külső térköz, átlátszó, lehet negatív és auto.
  3. Rövidítés: 1 érték = mind · 2 = fent-lent, jobbra-balra · 4 = fentről, az óramutató szerint.
  4. border: vastagság, stílus és szín — a stílus nélkül nincs keret.
  5. Doboz vízszintesen középre: max-width + margin: 0 auto.
  6. Méretnél a max-width és a min-height a biztonságos; rögzített height ritkán kell.
  7. Alapból (content-box) a width csak a tartalom — a belső térköz és a keret hozzáadódik.
  8. *, *::before, *::after { box-sizing: border-box; } — így a width a teljes dobozt jelenti. Minden stíluslap elejére.
  9. A függőleges margók összeolvadnak: a nagyobbik marad. Térközt egy irányba adj.
  10. Soron belüli elemen a felső-alsó margó és a width hatástalan.
  11. border-radius: lekerekítés · 50% egy négyzeten = kör · nagy érték = kapszula.
  12. box-shadow: eltolás, elmosás, szín — visszafogottan, átlátszó színnel. Nem foglal helyet.
  13. overflow: visible, hidden, auto — de a kilógás oka általában egy felesleges height.