# Box-model
De elementen op een pagina worden in een bepaald box-model opgenomen om ze op een correcte manier in de lay-out van een pagina op te nemen. In de standaard flow-lay-out bestaan er drie weergavetypes: inline, block en inline-block. Concreet vertellen ze aan de browser wat er moet gebeuren met een element in een lay-out: doorlopen of opbreken.
# block
Een element met weergavetype (display type) block
heeft de volgende eigenschappen:
- Begint automatisch op een nieuwe lijn.
- Voegt witruimte aan de randen van het blok toe.
- Neemt de volledige breedte van het ouderelement in beslag.
- De hoogte past zich aan aan de inhoud.
Voorbeelden van blokelementen zijn: <p>
, <h1>
, <address>
, ...
# inline
Een element met display type inline
heeft de volgende eigenschappen:
- Het wordt opgenomen in de lijn van de tekst en breekt ze dus niet op. Je kan ze dus in het midden van een zin gebruiken.
- Voegt nergens witruimte toe.
- De breedte past zich aan aan de inhoud.
Voorbeelden van inline-elementen zijn: <a>
, <img>
, <b>
, ...
# inline-block
Een element met display type inline-block
combineert de eigenschappen van beide types. Het laat toe dat blokken hun standaardwerking behouden, maar toch naast elkaar worden gezet (mits hun samengetelde breedte de breedte van het ouderelement niet overschrijdt). Ze beginnen dus niet meer automatisch op een nieuwe lijn. Er mag witruimte aan alle kanten toegevoegd worden via CSS.
Standaard bestaan er geen inline-elementen. Om gebruik te maken van dit display type moet je het veranderen via CSS.
# Voorbeeld
Bekijk het resultaat van de volgende HTML-code (met <style>
element voor korte opmaak) in de browser om een idee te krijgen van het verschil tussen een blok- en inline element. Speel ook eens met de breedte van het browservenster om te kijken hoe de lay-out zich aanpast.
<!DOCTYPE html>
<html lang="nl-BE">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Boxmodel</title>
<link rel="stylesheet" href="boxmodel.css">
<style>
.blok {
background-color: cyan;
border: 1px solid black;
}
</style>
</head>
<body>
<h1>Boxmodel</h1>
<p class="blok">Een kop en paragraaf zijn blokken, waardoor ze automatisch op een
nieuwe regel beginnen en standaard de breedte gelijk is aan de breedte van het
ouderelement, in dit geval het body-element.</p>
<p class="blok">Je kan randen en achtergrondkleuren gebruiken om snel een idee te
krijgen hoe ver een blok reikt.</p>
<p>Een <b>inline element</b>, zoals een <a href="#">link</a> of afbeelding
<img src="https://picsum.photos/100/"> kan binnen een regel tekst gebruikt worden.</p>
</body>
</html>
# Display type veranderen
Met de CSS-eigenschap display
verander je het display type van een element. Het box-model zal vervolgens zorgen dat de aanpassingen gereflecteerd worden op de pagina, ook als je het display-type later aanpast (zonder de pagina te moeten vernieuwen). Dit concept is belangrijk voor responsive webdesign (lay-out aanpassen aan resolutie, zoals voor mobiele apparaten).
De eigenschap display
kan verschillende waardes krijgen. We beperken ons voorlopig tot de drie bovenstaande: block
, inline
en inline-block
.
a {
/* Verander link-elementen van inline naar block
Ze zorgen dus voor een opbraak in lay-out en
starten op een nieuwe regel */
display: block;
}