Box Modellen
Alle HTML-elementer er bokser. Box Model forklarer hvordan disse boksene er bygget opp og hvordan de tar plass på siden.
Hva er Box Model?
Tenk deg at hvert element på en nettside er en pakke:
- Content - Selve innholdet (gaven inne i pakken)
- Padding - Polstring rundt innholdet (bobleplast)
- Border - Rammen rundt (esken)
- Margin - Avstand til andre pakker (plass mellom esker)
┌─────────────────────────────────────────┐
│ MARGIN │
│ ┌───────────────────────────────┐ │
│ │ BORDER │ │
│ │ ┌─────────────────────┐ │ │
│ │ │ PADDING │ │ │
│ │ │ ┌───────────┐ │ │ │
│ │ │ │ CONTENT │ │ │ │
│ │ │ └───────────┘ │ │ │
│ │ └─────────────────────┘ │ │
│ └───────────────────────────────┘ │
└─────────────────────────────────────────┘
Content
Selve innholdet i elementet - tekst, bilder, osv.
Automatisk størrelse
Hvis du ikke setter width eller height, tilpasser elementet seg automatisk til innholdet.
Padding
Padding er avstanden mellom innholdet og kanten (border). Det skaper "pusterom" inne i boksen.
┌──────────────────────────────┐
│ ░░░░░░░░░░░░░░░░░░░░░░░░░░░░ │
│ ░░░░░░░░░░░░░░░░░░░░░░░░░░░░ │
│ ░░░░░┌──────────────┐░░░░░░░ │
│ ░░░░░│ Innhold │░░░░░░░ │
│ ░░░░░└──────────────┘░░░░░░░ │
│ ░░░░░░░░░░░░░░░░░░░░░░░░░░░░ │
│ ░░░░░░░░░░░░░░░░░░░░░░░░░░░░ │
└──────────────────────────────┘
↑ padding (bakgrunnsfargen synes)
Padding-verdier
Første verdi: topp og bunn. Andre verdi: venstre og høyre.
Topp, høyre, bunn, venstre (med klokka fra toppen).
Huskeregel
Fire verdier går med klokka: Topp → Høyre → Bunn → Venstre (THBV - "Tenk Hardt Før Valg")
Border
Border er rammen rundt elementet.
Border shorthand
Border-stiler
| Stil | Utseende | Beskrivelse |
|---|---|---|
solid |
─────── | Heltrukket linje |
dashed |
- - - - | Stiplet linje |
dotted |
· · · · | Prikket linje |
double |
═══════ | Dobbel linje |
none |
(ingenting) | Ingen border |
Individuelle sider
.box {
border-top: 2px solid red;
border-right: 3px dashed blue;
border-bottom: 2px solid green;
border-left: 1px dotted orange;
}
Border-radius (avrunding)
Gjør hjørnene runde.
Margin
Margin er avstanden utenfor elementet - mellom dette elementet og andre elementer.
Margin-verdier
Fungerer akkurat som padding:
margin: 20px; /* Alle sider */
margin: 10px 30px; /* Topp/bunn, venstre/høyre */
margin: 10px 20px 30px 40px; /* Topp, høyre, bunn, venstre */
margin-top: 10px; /* Bare toppen */
Midtstille med margin
For å midstolle et element vannrett:
┌─────────────────────────────────────────┐
│ ┌───────────────┐ │
│ auto │ Sentrert │ auto │
│ ←─── │ boks │ ───→ │
│ └───────────────┘ │
└─────────────────────────────────────────┘
Krever bredde
margin: auto fungerer bare når elementet har en definert width.
Margin collapse
Når to vertikale marginer møtes, "kollapser" de - bare den største brukes.
Bare vertikalt
Margin collapse skjer bare vertikalt (topp/bunn), ikke horisontalt (venstre/høyre).
Beregne total størrelse
Som standard legges padding og border på toppen av width/height.
Total bredde:
│←──────────── 250px ──────────→│
┌──┬────────────────────────┬──┐
│5 │░░░░░░░░░░░░░░░░░░░░░░░░│5 │ ← border
├──┼────────────────────────┼──┤
│ │ 200px │ │
│20│ content │20│ ← padding
│ │ │ │
├──┼────────────────────────┼──┤
│5 │░░░░░░░░░░░░░░░░░░░░░░░░│5 │
└──┴────────────────────────┴──┘
box-sizing
Dette kan være forvirrende! Heldigvis finnes box-sizing.
content-box (standard)
width = bare innholdet. Padding og border legges til.
border-box (anbefalt)
width = alt inkludert padding og border.
│←────── 200px ──────→│
┌──┬──────────────┬──┐
│5 │░░░░░░░░░░░░░░│5 │
├──┼──────────────┼──┤
│20│ content │20│ ← content krymper
│ │ 150px │ │
├──┼──────────────┼──┤
│5 │░░░░░░░░░░░░░░│5 │
└──┴──────────────┴──┘
Bruk border-box overalt
De fleste utviklere setter dette øverst i CSS-filen:
Anbefalt
border-box gjør livet mye enklere! Da betyr width: 200px faktisk 200px.
Praktiske eksempler
Kort med padding
.card {
width: 300px;
padding: 20px;
border: 1px solid #ddd;
border-radius: 8px;
box-sizing: border-box;
}
Knapp
.button {
padding: 12px 24px;
border: none;
border-radius: 4px;
background: #007bff;
color: white;
}
Sentrert container
Bilde med ramme
.framed-image {
padding: 10px;
border: 3px solid #333;
background: white;
box-shadow: 0 2px 5px rgba(0,0,0,0.2);
}
Oppsummering
| Egenskap | Hva den gjør |
|---|---|
width / height |
Størrelse på content (eller hele boksen med border-box) |
padding |
Avstand mellom content og border |
border |
Ramme rundt elementet |
margin |
Avstand til andre elementer |
border-radius |
Avrundede hjørner |
box-sizing |
Hvordan width beregnes |
Margin ──→ │ │ ←── Margin
┌─────────┐
│ Border │
│ ┌─────┐ │
│ │Padd │ │
│ │ ing │ │
│ │┌───┐│ │
│ ││ C ││ │
│ │└───┘│ │
│ └─────┘ │
└─────────┘
DevTools
I nettleseren kan du høyreklikke på et element og velge "Inspiser" for å se Box Model visuelt! Se Utviklerverktøy for mer.