
The boxmodel
WIP
WEB ESSENTIALS

Block vs inline
Block-elementen
C://index.html
- Block elementen nemen standaard de volledige breedte in
-
Ze beginnen altijd op een nieuwe regel
-
Ze stapelen verticaal op elkaar, zoals blokken in een toren
-
Bijna alle elementen zijn block: <p>, <h1>, <h2>, <h3>...
- Je kan de breedte en hoogte aanpassen in CSS


RECAP
Inline-elementen

- Neemt enkel de eigen breedte in
-
Genereert géén nieuwe regel
-
Kunnen naast elkaar op dezelfde regel staan
-
Voorbeelden: <strong>, <em>, <a> ...
-
Je kan geen eigen breedte en hoogte instellen

RECAP
Inline-block elementen
= combinatie van beide
-
Plaatst zich naast andere elementen (zoals inline).
-
Je kunt wel breedte en hoogte instellen (zoals block).
-
Voorbeeld: <img>
🤓 Tip
inline-block kan handig zijn voor <a> elementen wanneer je deze wil opmaken als een button
/* Dit is standaard voor een p-element */
p {
display: block;
}
/* En hier passen we dit aan. */
.special-paragraph {
display: inline;
}
Soms wil je een block-element omzetten in een inline-element of andersom, dat kan in css met de display property
Display property
Reset CSS
Wat is een reset.css?
Een reset.css is een extra CSS-bestand dat je toevoegt om alle standaardstijlen van de browser te neutraliseren.
- Styling verschilt van browser tot browser
- Zit soms in de weg, door reset kan je met een "leeg blad" starten
/*
Artevelde hogeschool CSS Reset v0.1
Adapted version from Josh's Custom CSS Reset https://www.joshwcomeau.com/css/custom-css-reset/
*/
/*
1. Use a more-intuitive box-sizing model.
*/
*,
*::before,
*::after {
box-sizing: border-box;
}
/*
2. Remove default margin
*/
* {
margin: 0;
}
/*
3. Allow percentage-based heights in the application
*/
html, body {
height: 100%;
}
/*
Typographic tweaks!
4. Add accessible line-height
5. Improve text rendering
*/
body {
line-height: 1.5;
-webkit-font-smoothing: antialiased;
}
/*
6. Improve media defaults
*/
img, picture, video, canvas, svg {
display: block;
max-width: 100%;
}
/*
7. Remove built-in form typography styles
*/
input, button, textarea, select {
font: inherit;
}
/*
8. Avoid text overflows
*/
p, h1, h2, h3, h4, h5, h6 {
overflow-wrap: break-word;
}
Artevelde's reset.css
Er bestaan een hele boel van deze "reset css" variaties die je online kan vinden, wij gebruiken onze eigen Artevelde's reset.css
- Noem dit bestand altijd reset.css
/*
Artevelde hogeschool CSS Reset v0.1
Adapted version from Josh's Custom CSS Reset https://www.joshwcomeau.com/css/custom-css-reset/
*/
/*
1. Use a more-intuitive box-sizing model.
*/
*,
*::before,
*::after {
box-sizing: border-box;
}
/*
2. Remove default margin
*/
* {
margin: 0;
}
/*
3. Allow percentage-based heights in the application
*/
html, body {
height: 100%;
}
/*
Typographic tweaks!
4. Add accessible line-height
5. Improve text rendering
*/
body {
line-height: 1.5;
-webkit-font-smoothing: antialiased;
}
/*
6. Improve media defaults
*/
img, picture, video, canvas, svg {
display: block;
max-width: 100%;
}
/*
7. Remove built-in form typography styles
*/
input, button, textarea, select {
font: inherit;
}
/*
8. Avoid text overflows
*/
p, h1, h2, h3, h4, h5, h6 {
overflow-wrap: break-word;
}
reset.css inladen
Voeg de reset.css altijd als eerste css-link toe in de head
-
Reset.css neutraliseert eerst de browserstijlen
-
Je eigen CSS overschrijft daarna die neutrale basis met eigen stijlen
-
Zou je reset.css na je eigen CSS inladen, dan zou deze jouw stijlen aanpassen
<!DOCTYPE html>
<html>
<head>
...
<link rel="stylesheet" href="css/reset.css">
<link rel="stylesheet" href="css/main.css">
...
</head>
...
Box sizing model
Wat is the box model?
Elke website is opgebouwd uit blokken waarbij we de breedte, hoogte margin, padding... kunnen instellen

Wat is the boxmodel?
Elke blok kunnen we opbouwen op de volgende manier:

- Content: De inhoud, zoals tekst of image
- Padding: Ruimte binnen het element
- Border: De rand (lijn) rondom het element
- Margin: De ruimte tussen het element en andere elementen

Box sizing
The boxmodel kunnen we gebruiken om te berekenen hoeveel ruimte een element zal innemen op onze website. Wat opgeteld wordt, hangt hangt af van je box-sizing instellingen:
- Content-box
- Border-box

Content-box
Border-box
Box-sizing: content-box
- Standaard instelling van de browser
- Width & height tellen alleen voor content
- padding en border worden daarbovenop toegevoegd
- totale breedte = width + padding + border

Content-box
Box-sizing: content-box
Een voorbeeld
-
content: 200px
-
padding: 40px in totaal (20px padding links + rechts)
-
border: 10px in totaal (5px border links + rechts)
-
Totale breedte: 250px
*,
*::before,
*::after {
box-sizing: content-box;
}
div {
width: 12.5rem; /* 200px, content breedte */
padding: 1.25rem; /* 20px ruimte binnen de box */
border: 0.313rem solid black; /* 5px, rand */
margin: 0.625rem; /* 10px, ruimte buiten de box */
}
Box-sizing: border-box
- Stellen we in met de reset.css
- Width en height omvatten content, padding én border
- De content krimpt automatisch om ruimte te maken voor padding en border
- Totale breedte = width (inclusief alles)

Border-box
Box-sizing: border-box
Een voorbeeld
-
Totale breedte: 200px
-
border: 10px in totaal (5px border links + rechts)
-
padding: 40px in totaal (20px padding links + rechts)
-
content: 150px (200px - 40 px padding - 10px border)
*,
*::before,
*::after {
box-sizing: border-box;
}
div {
width: 12.5rem; /* 200px, content breedte */
padding: 1.25rem; /* 20px ruimte binnen de box */
border: 0.313rem solid black; /* 5px, rand */
margin: 0.625rem; /* 10px, ruimte buiten de box */
}
Box-sizing: border-box
We kiezen voor de border-box instelling omdat deze handiger is om te gebruiken
- Je krijgt precies de afmetingen die je specificeert, ongeacht padding en border
-
Maakt responsive design en grid/flexbox layouts voorspelbaarder
-
Zit standaard in onze reset.css
Width & height
Width & height
Hiermee geef je een vaste breedte of hoogte aan een element
- Kan je enkel instellen voor block-element (of inline-block)
- Block-element heeft standaard een breedte van 100% en een hoogte die zich aanpast aan de content (auto)
- Met width en height stel je je eigen waarden in
nav {
width: 80%;
height: 20rem;
}
Min & max waardes
Wanneer we responsive werken, kan het interessant zijn om te werken met min & max waardes
- max-width: het element mag nooit groter worden dan deze waarde
- min-width: het element mag nooit kleiner worden dan deze waarde
- Je kan ook min-height & max-height instellen
.responsive-box {
width: 100%; /* probeer altijd de volle breedte van de parent te pakken */
max-width: 50rem; /* maar nooit groter dan 50rem */
min-width: 10rem; /* en nooit kleiner dan 10rem */
}
Padding
Padding
Padding is de ruimte tussen de content van een element en de rand (border) van dat element. Het is de "witruimte" binnen je element.

Padding
Padding kan je individueel per zijde toevoegen.
.my-box {
padding-top: 2rem;
padding-right: 1rem;
padding-bottom: 2rem;
padding-left: 1rem;
}

.my-box {
padding-top: 1rem;
padding-right: 1rem;
padding-bottom: 1rem;
padding-left: 1rem;
}
TOP
RIGHT
BOTTOM
LEFT
Padding
Je kan ook met een shorthand notatie werken. De waardes geef je kloksgewijs mee (top, right, bottom, left).
/* Alle zijden gelijk */
.my-box {
padding: 1.25rem;/
}
/* Verticaal | Horizontaal */
.my-box {
padding: 1rem 2rem;
}
/* Top | Horizontaal | Bottom */
.my-box {
padding: 1rem 2rem 3rem;
}
/* Top | Right | Bottom | Left */
.my-box {
padding: 1rem 2rem 1.25rem .5rem;
}

TOP
RIGHT
BOTTOM
LEFT
Padding
Border
Border

Borders vormen de rand rondom een element. Deze rand staat rond de content en de padding.
Border
Een border kan je de volgende eigenschappen geven, je kan deze ook samenvoegen in een shorthand notatie
- border-width
- border-style
- border-color
.my-box {
border-width: 1px;
border-style: solid;
border-color: hsl(0, 0%, 20%);
}
.my-box {
border: 1px solid hsl(0, 0%, 20%);
}
Border-style
.border-styles {
/* Doorgetrokken lijn */
border: 1px solid hsl(0, 0%, 0%);
/* Streepjeslijn */
border: 1px dashed hsl(240, 100%, 50%);
/* Puntjeslijn */
border: 1px dotted hsl(0, 100%, 50%);
/* Dubbele lijn */
border: 2px double hsl(120, 100%, 25%);
/* 3D groef effect */
border: 3px groove hsl(0, 0%, 50%);
/* 3D verhoogd effect */
border: 3px ridge hsl(0, 0%, 50%);
/* 3D ingedrukt effect */
border: 3px inset hsl(0, 0%, 50%);
/* 3D uitstekend effect */
border: 3px outset hsl(0, 0%, 50%);
}
Met border-style bepaal je de soort lijn: volle lijn, stippellijn...

Border
.my-box {
border-top: 3px solid blue;
}
Je kan ook een border enkel aan 1 kant toevoegen
.my-box {
border-top: 2px solid hsl(0, 100%, 50%);
border-right: 1px dashed hsl(240, 100%, 50%);
border-bottom: 1px dotted hsl(120, 100%, 25%);
border-left: 1px double hsl(270, 100%, 50%);
}
Of elke kant een andere soort border geven
Border
Border-radius
Met border-radius voeg je afgeronde hoeken toe aan je element
.my-box {
border: 0.5rem solid hsl(324, 100%, 14%);
border-radius: 2rem;
}
Border-radius
Ook heer kan je weer verschillende waardes meegeven per hoek, of werken met een shorthand
/* Individuele hoeken */
.my-box {
border-top-left-radius: 1rem;
border-top-right-radius: 2rem;
border-bottom-right-radius: 3rem;
border-bottom-left-radius: 4rem;
}
/* Shorthand: top-left | top-right | bottom-right | bottom-left */
.my-box {
border-radius: 1rem 2rem 3rem 4rem;
}
/* Cirkel */
.my-box {
border-radius: 50%;
}

Margin
Margin
Margin is de ruimte rondom een element, buiten de border. Het zorgt voor ruimte tussen verschillende elementen.


Margin
Net zoals bij padding, kan je deze individueel per zijde toevoegen.
.my-box {
margin-top: 2rem;
margin-right: 1rem;
margin-bottom: 2rem;
margin-left: 1rem;
}

.my-box {
margin-top: 1rem;
margin-right: 1rem;
margin-bottom: 1rem;
margin-left: 1rem;
}
TOP
RIGHT
BOTTOM
LEFT
Margin
Je kan ook met een shorthand notatie werken. De waardes geef je kloksgewijs mee (top, right, bottom, left).
/* Alle zijden gelijk */
.my-box {
margin: 1.25rem;/
}
/* Verticaal | Horizontaal */
.my-box {
margin: 1rem 2rem;
}
/* Top | Horizontaal | Bottom */
.my-box {
margin: 1rem 2rem 3rem;
}
/* Top | Right | Bottom | Left */
.my-box {
margin: 1rem 2rem 1.25rem .5rem;
}

TOP
RIGHT
BOTTOM
LEFT
Margin
Elementen uitlijnen met margin
Naast een numerieke waarde, kan je een margin ook de waarde auto geven. Hiermee kan je een block element helemaal rechts of centraal uitlijnen binnen zijn parent.
/* Element rechts uitlijnen */
.my-box {
width: 20rem;
margin-right:auto;
}
/* Element centraal uitlijnen */
.my-box {
width: 20rem;
margin-left: auto;
margin-right: auto;
}
Sizing units
Sizing units - beslissingsboom
- rem: Voor tekst of witruimtes relatief t.a.v. font-grootte
- %: Voor afmetingen die relatief zijn ten aanzien van de afmetingen van de parent
- vw of vh: voor afmetingen die relatief zijn ten aanzien van de viewport width of viewport height afmetingen.
Beter nog: dvh en dvw = dynamic viewport width / height - px: Enkel indien het niets met font-grootte te maken heeft. Vermijden waar mogelijk.
Sizing units
Als je 3 children van dezelfde parent elk met een andere unit zou breder maken, zou dit er zo gaan uitzien:
Hoe breed is .my-child?
<div class="parent">
<div class="child"></div>
</div>
.parent {
width: 30rem;
}
.child {
width: 50%;
}
Hoe breed is .my-child?
<div class="my-parent">
<div class="my-child"></div>
</div>
.my-parent {
width: 30rem;
}
.my-child {
width: 200%;
}
Hoe breed is .my-child?
<div class="my-parent">
<div class="my-child"></div>
</div>
.my-parent {
width: 100%;
}
.my-child {
width: 50%;
}
Hoe breed is .my-child?
<div class="my-parent">
<div class="my-child"></div>
</div>
.my-parent {
width: 50%;
}
.my-child {
width: 20%;
}
Hoe breed is .my-child?
<div class="my-parent">
<div class="my-child"></div>
</div>
.my-parent {
width: 50%;
}
.my-child {
width: 100vw;
}
Hoe breed is .my-child?
<div class="my-parent">
<div class="my-child"></div>
</div>
.my-parent {
width: 50%;
}
.my-child {
width: 100vw;
}
Box backgrounds
Box backgrounds
Box backgrounds
Box backgrounds
Box backgrounds
Box backgrounds
Box backgrounds
Box backgrounds
Oefening @Campus
A winter night in the forest
Styling the visual box
Styling the visual box
6. The box model
By Lecturer GDM
6. The box model
Block & inline boxes. The content box sizing. Padding, margin, border & Margin. Sizing Unites, box backgrounds & Styling the visual box.
- 25