🅱️Bootstrap 5
Bouw snel een mooie, responsieve website met Bootstrap 5: grid, utilities, flexbox, componenten, formulieren, navigatie en interactieve onderdelen zoals modals en accordions. Je typt zelf de HTML, ziet het resultaat meteen in verschillende schermbreedtes en sluit af met een eigen landingspagina.
Overzicht
Werk de onderdelen hieronder in je eigen tempo af: lees de uitleg, doe het opzoekwerk en sluit af met een quizje. Klik een onderdeel open om te starten.
Bootstrap is een kant-en-klare verzameling CSS en JavaScript waarmee je snel een mooie, responsieve website bouwt. Je leert hoe je het inlaadt, wat een starter-pagina bevat en hoe je met classes werkt in plaats van eigen CSS te schrijven.
Wat is Bootstrap?
Bootstrap is het meest gebruikte front-end framework ter wereld: een verzameling kant-en-klare CSS (opmaak) en JavaScript (gedrag) die je in je pagina inlaadt. In plaats van zelf voor elke knop, kaart of menu CSS te schrijven, geef je je HTML-elementen de juiste classes en Bootstrap doet de rest.
Snel
Een nette knop, kaart of navigatiebalk in één regel HTML.
Responsive
Je pagina past zich aan aan telefoon, tablet en computer: mobile first.
Consistent
Alle onderdelen hebben dezelfde stijl en werken in alle moderne browsers.
Kennis van HTML (de structuur) en een beetje CSS (classes, id’s, selectors). Voor de interactieve onderdelen (modal, menu dat openklapt) gebruikt Bootstrap zijn eigen JavaScript: je hoeft dat niet te schrijven.
Bootstrap inladen via een CDN
De eenvoudigste manier om Bootstrap te gebruiken is een CDN (Content Delivery Network): een snelle server die de bestanden voor je host. Je laadt twee bestanden in:
- het CSS-bestand met een
<link>in de<head>; - het JavaScript-bestand (de “bundle”, inclusief Popper voor dropdowns en tooltips) met een
<script>onderaan de body.
index.html<!doctype html>
<html lang="nl">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Mijn eerste Bootstrap-pagina</title>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet">
</head>
<body>
<div class="container">
<h1>Hallo Bootstrap!</h1>
<p>Deze pagina is opgemaakt met Bootstrap 5.</p>
</div>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js"></script>
</body>
</html><meta name="viewport" content="width=device-width, initial-scale=1"> zorgt dat een telefoon je pagina op de échte schermbreedte toont in plaats van uitgezoomd. Zonder deze regel werkt responsive design niet.
Je eerste Bootstrap-onderdelen
Op deze pagina is Bootstrap al voor je ingeladen, dus in de voorbeelden hoef je enkel de inhoud van de body te typen. Klik op Uitvoeren. Onder de code kies je de schermbreedte; rechtsonder in het voorbeeld zie je het actieve breakpoint.
Werken met classes
Bootstrap werkt met classes: korte namen die je aan een element geeft. Je kan er meerdere combineren, gescheiden door een spatie. Enkele voorbeelden die je in dit boek steeds terugziet:
| Class | Effect |
|---|---|
btn btn-success | een groene knop |
text-center | gecentreerde tekst |
mt-3 | ruimte boven (margin-top) |
col-md-6 | een kolom die vanaf tablet de helft breed is |
d-none d-lg-block | verborgen, behalve op grote schermen |
Je hoeft ze niet van buiten te leren: de documentatie op getbootstrap.com toont bij elk onderdeel voorbeeldcode die je kan kopiëren. Leren werken met de documentatie is de belangrijkste vaardigheid!
Bootstrap gaat uit van een smal scherm: wat je zonder breakpoint schrijft (col-6) geldt vanaf het kleinste scherm; met md, lg… pas je het aan voor grotere schermen.
Alternatieven: lokaal of via npm
Een CDN is handig, maar je kan Bootstrap ook downloaden en zelf in je map css/ en js/ bewaren (werkt offline), of installeren met npm install bootstrap in een groter project. Wie de kleuren en maten wil aanpassen, werkt met de Sass-bronbestanden (zie het hoofdstuk over thema’s). Voor deze cursus volstaat de CDN.
Synthese
- Bootstrap = CSS + JavaScript die je met classes gebruikt.
- Laad het CSS-bestand in de head en de JS-bundle onderaan de body.
- Zonder de viewport-meta werkt responsive niet.
- De documentatie (getbootstrap.com) is je beste vriend.
Verwerk wat je hierboven las met de onderdelen hieronder. Ze horen bij deze theorie.
🧪 Oefeningen — 1 Wat is Bootstrap?
Typ de HTML in het vak en klik op Uitvoeren: Bootstrap is hier al voor je ingeladen. Met de knoppen onder de code kies je de schermbreedte (📱 375, 💻 768, 🖥 1200) en het label rechtsonder toont het actieve breakpoint. Met "Controleer" kijk je na of je de juiste classes gebruikte. Je code wordt bewaard als je aangemeld bent.
Maak een volledige pagina met Bootstrap. Vul de startcode aan: (1) de viewport-meta, (2) de CSS-link van Bootstrap in de head, (3) een container met een <h1> “Hallo Bootstrap!”, en (4) de JS-bundle onderaan de body. Test dan of de kop netjes opgemaakt is (de container geeft marge links en rechts).
Zet in een container een kop <h2>, een inleidende alinea met de class lead en twee knoppen: een blauwe (btn btn-primary) en een rode met alleen een rand (btn btn-outline-danger).
🔍 Opzoekwerk — 1 Wat is Bootstrap?
Zoek het antwoord zelf op (internet, cursus, ...) en typ het hieronder. Wordt automatisch bewaard.
Tip: Tailwind werkt met “utility-first” classes.
✓ opgeslagenTip: zoek op "Bootstrap Twitter Mark Otto".
✓ opgeslagen✅ Testjezelf-quiz — 1 Wat is Bootstrap?
Beantwoord alle vragen en klik daarna op "Controleer". Je mag zo vaak opnieuw proberen als je wil.
Het hart van Bootstrap: een raster van 12 kolommen. Je leert werken met container, row en col, kolommen naast elkaar zetten, offsets, volgorde en geneste rasters.
Container
Elke Bootstrap-lay-out begint met een container: het vak dat je inhoud centreert en marge geeft links en rechts.
| Class | Gedrag |
|---|---|
container | vaste maximale breedte die per breakpoint verandert (540, 720, 960, 1140, 1320 px), gecentreerd |
container-fluid | altijd 100 % breed |
container-md | volledig breed tot md, daarna vaste breedte (ook sm, lg, xl, xxl) |
Het raster: row en col
Binnen een container werk je met het 12-kolommenraster. Een .row is een rij, met daarin kolommen .col-…. De getallen van je kolommen tellen op tot 12: dan staan ze mooi naast elkaar. Zijn het er meer dan 12, dan schuift de rest naar een nieuwe lijn.
Gelijke kolommen
col verdeelt de ruimte gelijk over alle kolommen in de rij.
Vaste breedte
col-4 = 4 van de 12 delen, dus een derde. Drie keer col-4 = een volle rij.
Op maat van de inhoud
col-auto is precies zo breed als de inhoud; de rest verdeelt de overige ruimte.
Probeer het in het lab: verander col-md-4 in col-md-6 of col-md-3 en let op het breakpoint. Bij een smal scherm (onder 768 px) staan de kolommen onder elkaar!
Kolommen naast elkaar, verschillende breedtes
De kolommen in één rij mogen verschillende breedtes hebben, zolang de som 12 is. Een typische indeling is een menu (3) naast de inhoud (9). Bij col-… zonder breakpoint staan ze op elk scherm naast elkaar; met een breakpoint (col-md-…) staan ze onder elkaar op smalle schermen.
Ruimte tussen kolommen: gutters
De ruimte tussen de kolommen heet de gutter. Je regelt ze op de .row met g-0 t/m g-5 (of gx- voor horizontaal en gy- voor verticaal).
Offset, volgorde en uitlijning
| Class | Wat doet het? |
|---|---|
offset-md-2 | schuift de kolom 2 kolommen op (lege ruimte ervoor) |
ms-auto | duwt de kolom naar rechts (margin-start auto) |
order-1, order-md-2 … | bepaalt de volgorde (0 t/m 5, first, last) |
align-items-center | op de row: alle kolommen verticaal centreren |
justify-content-center | op de row: de kolommen horizontaal centreren |
row-cols-3 | op de row: telkens 3 kolommen per lijn, zonder col-… te schrijven |
Met row-cols-… maak je snel een galerij: alle kinderen krijgen dezelfde breedte en vallen vanzelf naar een nieuwe lijn.
Geneste rasters
Binnen een kolom kan je opnieuw een .row zetten met nieuwe kolommen. Die telt opnieuw tot 12 binnen de breedte van de ouderkolom.
Synthese
- container → row → col, altijd in die volgorde.
- Een rij heeft 12 kolomdelen; meer dan 12 schuift naar een nieuwe lijn.
col(gelijk),col-4(vast),col-auto(op maat).g-3= gutter,offset-…= opschuiven,order-…= volgorde,row-cols-…= aantal per lijn.
Verwerk wat je hierboven las met de onderdelen hieronder. Ze horen bij deze theorie.
🧪 Oefeningen — 2 Container en grid
Typ de HTML in het vak en klik op Uitvoeren: Bootstrap is hier al voor je ingeladen. Met de knoppen onder de code kies je de schermbreedte (📱 375, 💻 768, 🖥 1200) en het label rechtsonder toont het actieve breakpoint. Met "Controleer" kijk je na of je de juiste classes gebruikte. Je code wordt bewaard als je aangemeld bent.
Maak in een container een rij met drie kolommen van gelijke breedte (elk een derde), met de tekst Kolom 1, Kolom 2 en Kolom 3. Op smalle schermen (onder 768 px) mogen ze onder elkaar staan: gebruik col-md-4.
Maak een lay-out met een menu (3 kolomdelen) links en de inhoud (9 kolomdelen) rechts, vanaf md naast elkaar. Geef de rij een gutter met g-3.
Zet één kolom van 6 delen in het midden van de pagina, met offset-3 (of justify-content-center op de rij). Geef de kolom een lichte achtergrond met bg-light en p-4.
Maak een rij met row-cols-2 op smalle en row-cols-md-4 op grotere schermen, met acht kolommen (col), zodat je automatisch twee rijen van vier krijgt.
🔍 Opzoekwerk — 2 Container en grid
Zoek het antwoord zelf op (internet, cursus, ...) en typ het hieronder. Wordt automatisch bewaard.
Tip: zoek op "CSS flexbox uitleg".
✓ opgeslagenTip: rijen én kolommen tegelijk.
✓ opgeslagen✅ Testjezelf-quiz — 2 Container en grid
Beantwoord alle vragen en klik daarna op "Controleer". Je mag zo vaak opnieuw proberen als je wil.
Een goede website ziet er op elk scherm goed uit. Je leert de zes breakpoints kennen, kolommen laten veranderen per schermbreedte, elementen tonen of verbergen en afbeeldingen laten meeschalen.
Breakpoints
Een breakpoint is een schermbreedte waarop je lay-out mag veranderen. Bootstrap kent er zes. Elk breakpoint geldt vanaf die breedte en groter (mobile first).
| Naam | Prefix | Vanaf | Typisch apparaat |
|---|---|---|---|
| Extra small | (geen) | 0 px | kleine telefoon |
| Small | sm | 576 px | telefoon liggend |
| Medium | md | 768 px | tablet |
| Large | lg | 992 px | laptop |
| Extra large | xl | 1200 px | desktop |
| Extra extra large | xxl | 1400 px | groot scherm |
col-md-6 geldt op md én alles daarboven (lg, xl, xxl). Wil je op grotere schermen iets anders, dan voeg je nog een class toe, bv. col-md-6 col-xl-3.
Kolommen per breakpoint
Combineer meerdere kolomclasses op één element: de laatste die van toepassing is voor de huidige breedte wint. Probeer het lab. Op xs staat elke kolom op een eigen lijn (col-12), vanaf md twee naast elkaar en vanaf xl vier. Klik door de breedtes heen!
Elementen tonen en verbergen
Met de display-classes toon of verberg je elementen per schermbreedte: d-none verbergt, d-block (of d-flex, d-inline…) toont. Met een breakpoint bepaal je vanaf wanneer.
| Zichtbaar op… | Classes |
|---|---|
| enkel xs en sm | d-block d-md-none |
| enkel md | d-none d-md-block d-lg-none |
| vanaf lg | d-none d-lg-block |
| nooit | d-none |
Zo kan je bv. een uitgebreid menu tonen op een computer en een compact menu op een telefoon.
Responsive afbeeldingen
Een grote foto loopt op een telefoon uit zijn vak. Met img-fluid krijgt de afbeelding max-width: 100%; height: auto: ze wordt nooit breder dan haar ouder en behoudt de verhoudingen. Andere handige classes: rounded, rounded-circle (rond), img-thumbnail (rand) en object-fit-cover (bijsnijden).
Responsive tekst en video
Ook video’s en iframes schalen mee met een ratio-container: <div class="ratio ratio-16x9"> houdt de verhouding (16:9, 4:3, 21:9 of 1:1) op elke breedte. Tekst pas je aan met fs-1…fs-6 en uitlijning per breakpoint, bv. text-center text-md-start.
Synthese
- Zes breakpoints: xs, sm, md, lg, xl, xxl (0, 576, 768, 992, 1200, 1400 px).
- Classes met een breakpoint gelden vanaf die breedte.
d-none d-md-block= verborgen op telefoon, zichtbaar vanaf tablet.img-fluidlaat een afbeelding meeschalen;ratiodoet hetzelfde voor video.- Zonder viewport-meta werkt niets van dit alles!
Verwerk wat je hierboven las met de onderdelen hieronder. Ze horen bij deze theorie.
🧪 Oefeningen — 3 Responsive design en breakpoints
Typ de HTML in het vak en klik op Uitvoeren: Bootstrap is hier al voor je ingeladen. Met de knoppen onder de code kies je de schermbreedte (📱 375, 💻 768, 🖥 1200) en het label rechtsonder toont het actieve breakpoint. Met "Controleer" kijk je na of je de juiste classes gebruikte. Je code wordt bewaard als je aangemeld bent.
Pas de vier kolommen aan zodat ze op een telefoon onder elkaar staan (col-12), op een tablet twee per rij (col-md-6) en op een groot scherm vier naast elkaar (col-xl-3).
Maak twee blokken: een met de tekst “Mobiel” dat enkel op schermen kleiner dan md zichtbaar is, en een met de tekst “Desktop” dat enkel vanaf md zichtbaar is.
Toon in een container een afbeelding (https://picsum.photos/seed/x/800/300) die meeschaalt (img-fluid), afgeronde hoeken heeft (rounded) en een alt-tekst.
🔍 Opzoekwerk — 3 Responsive design en breakpoints
Zoek het antwoord zelf op (internet, cursus, ...) en typ het hieronder. Wordt automatisch bewaard.
Tip: @media (min-width: 768px) { … }
✓ opgeslagenTip: zoek op "most common screen resolutions".
✓ opgeslagen✅ Testjezelf-quiz — 3 Responsive design en breakpoints
Beantwoord alle vragen en klik daarna op "Controleer". Je mag zo vaak opnieuw proberen als je wil.
Bootstrap zorgt voor nette standaardtekst en een vast kleurenpalet. Je leert koppen, lead-tekst, uitlijning, gewicht, kleuren, achtergronden en het contextuele kleurensysteem (primary, success, danger…).
Koppen en gewone tekst
Bootstrap geeft <h1> t/m <h6> een nette maat en marge. Wil je de uitzicht van een kop zonder de betekenis (SEO!) te veranderen, gebruik dan de classes h1–h6 op een ander element. Grotere “display”-koppen (display-1–display-6) zijn ideaal voor een hero. Een inleidende alinea krijgt lead.
Tekst opmaken met utilities
Met utility-classes (kleine, éénmalige classes) pas je tekst snel aan, zonder CSS te schrijven:
| Wat? | Classes |
|---|---|
| uitlijning | text-start · text-center · text-end (ook text-md-center) |
| gewicht | fw-bold · fw-semibold · fw-normal · fw-light |
| stijl | fst-italic · fst-normal |
| hoofdletters | text-uppercase · text-lowercase · text-capitalize |
| grootte | fs-1 (groot) … fs-6 (klein) |
| decoratie | text-decoration-none · text-decoration-underline |
| afbreken | text-truncate (… bij te lange tekst) · text-break · text-nowrap |
Kleuren: het contextuele systeem
Bootstrap heeft een vast palet met betekenis: elke kleur staat voor een “context”. Gebruik ze consequent!
Hoofdkleur
De belangrijkste actie of merkkleur (blauw).
Gelukt
Iets is goed verlopen (groen).
Gevaar/fout
Fout of destructieve actie, zoals verwijderen (rood).
Let op
Waarschuwing (geel).
Informatie
Neutrale extra uitleg (lichtblauw).
Neutraal
Grijs, heel licht en heel donker.
Je past ze toe met een voorvoegsel: text- voor tekstkleur, bg- voor achtergrond, border- voor randen, btn- voor knoppen. Combineer bv. text-success, bg-danger, border-warning.
Subtiele varianten en transparantie
Naast de volle kleuren heeft Bootstrap 5.3 zachte “subtle”-varianten voor achtergronden en randen: bg-primary-subtle, text-primary-emphasis, border-primary-subtle. Ideaal voor rustige blokken met leesbare tekst. Met bg-opacity-25 of text-opacity-50 maak je een kleur doorzichtig.
Lettertypen en toegankelijkheid
Bootstrap gebruikt standaard het systeemlettertype van de gebruiker (snel en vertrouwd). Wil je monospace tekst (code)? Gebruik font-monospace. Denk ook aan contrast: witte tekst op een gele achtergrond (bg-warning) is slecht leesbaar; gebruik daar text-dark. Kleur alleen mag nooit de enige aanduiding zijn (kleurenblinden!): voeg een icoon of tekst toe.
Wie 4,5:1 contrast wil halen tussen tekst en achtergrond, controleert het met de gratis WebAIM Contrast Checker.
Synthese
- Koppen:
h1–h6, grotedisplay-1..6, inleiding metlead. - Utilities:
text-center,fw-bold,fst-italic,fs-3,text-uppercase. - Kleuren: primary, secondary, success, danger, warning, info, light, dark, met voorvoegsel
text-,bg-,border-. - Zachte varianten:
-subtleen-emphasis. - Let op contrast en gebruik niet enkel kleur als informatie.
Verwerk wat je hierboven las met de onderdelen hieronder. Ze horen bij deze theorie.
🧪 Oefeningen — 4 Typografie en kleuren
Typ de HTML in het vak en klik op Uitvoeren: Bootstrap is hier al voor je ingeladen. Met de knoppen onder de code kies je de schermbreedte (📱 375, 💻 768, 🖥 1200) en het label rechtsonder toont het actieve breakpoint. Met "Controleer" kijk je na of je de juiste classes gebruikte. Je code wordt bewaard als je aangemeld bent.
Maak de tekst mooi op: de h1 wordt gecentreerd (text-center), de eerste alinea wordt een lead, de tweede alinea wordt vet (fw-bold) en de voetnoot krijgt text-body-secondary en fs-6.
Geef de drie blokken een kleur met betekenis: Succes een groene achtergrond (bg-success), Gevaar een rode (bg-danger) en Info een lichtblauwe (bg-info). Geef alle blokken padding (p-3) en zorg dat de tekst van succes en gevaar wit is (text-white).
Maak een hero: een donker vak (bg-dark text-white) met padding p-5 en afgeronde hoeken (rounded), met daarin een grote titel (<h1 class="display-5">), een lead-tekst en alle tekst gecentreerd (text-center).
🔍 Opzoekwerk — 4 Typografie en kleuren
Zoek het antwoord zelf op (internet, cursus, ...) en typ het hieronder. Wordt automatisch bewaard.
Tip: zoek op "colour psychology UX".
✓ opgeslagenTip: 4,5:1 voor normale tekst.
✓ opgeslagen✅ Testjezelf-quiz — 4 Typografie en kleuren
Beantwoord alle vragen en klik daarna op "Controleer". Je mag zo vaak opnieuw proberen als je wil.
Met de spacing-utilities regel je marge en padding zonder CSS. Daarnaast leer je randen, schaduwen, afgeronde hoeken en breedte/hoogte instellen.
Margin en padding
Margin is de ruimte buiten een element (afstand tot de buren), padding is de ruimte binnen het element (tussen rand en inhoud). Bootstrap geeft ze korte namen die je zelf kan samenstellen:
| Deel | Betekenis |
|---|---|
m / p | margin of padding |
t · b | top (boven) · bottom (onder) |
s · e | start (links) · end (rechts) — draait om bij rechts-naar-links talen |
x · y | links + rechts · boven + onder |
| (leeg) | alle vier de kanten |
0 … 5 | 0 · 0,25 · 0,5 · 1 · 1,5 · 3 rem |
auto | automatische marge (bv. mx-auto = centreren) |
Voorbeelden: mt-3 (marge boven 1 rem), px-4 (padding links en rechts 1,5 rem), p-2 (padding rondom 0,5 rem), mb-0 (geen marge onder). Ook per breakpoint: p-2 p-md-5. Stel er hieronder zelf een samen:
Ruimte tussen elementen: gap en mx-auto
Voor een rij elementen (bv. knoppen) geef je niet aan elk element een marge, maar gebruik je gap-3 op de ouder (werkt bij d-flex en d-grid). Een blok centreren doe je met een vaste breedte en mx-auto.
Randen, hoeken en schaduw
| Wat? | Classes |
|---|---|
| rand rondom | border · border-2 … border-5 (dikte) |
| één kant | border-top · border-bottom · border-start · border-end |
| zonder rand | border-0 · border-top-0 |
| randkleur | border-primary · border-danger … |
| afgeronde hoeken | rounded · rounded-3 · rounded-pill · rounded-circle |
| schaduw | shadow-sm · shadow · shadow-lg |
Breedte, hoogte en overloop
Voor formaat zijn er handige classes: w-25, w-50, w-75, w-100, w-auto (procent van de ouder) en dezelfde voor hoogte: h-100. Dan zijn er mw-100 (max-width), vw-100/vh-100 (schermbreedte/-hoogte) en min-vh-100 (minstens schermhoogte). overflow-auto laat een scrollbalk verschijnen als de inhoud niet past.
Positie en z-index
Ook positioneren kan met classes: position-relative, position-absolute, position-fixed en position-sticky, gecombineerd met top-0, start-0, end-0, bottom-0 en translate-middle (centreren op het punt). Zo plaats je bv. een badge in het hoekje van een knop.
Synthese
- m/p + kant (t, b, s, e, x, y) + grootte 0–5 (of
auto):mt-3,px-4. - Ruimte tússen elementen:
gap-3op de ouder. border,rounded,shadowvoor rand, hoeken en schaduw.w-50,h-100,mx-autovoor formaat en centreren.position-absolute+top-0 end-0voor positioneren.
Verwerk wat je hierboven las met de onderdelen hieronder. Ze horen bij deze theorie.
🧪 Oefeningen — 5 Spacing, randen en formaat
Typ de HTML in het vak en klik op Uitvoeren: Bootstrap is hier al voor je ingeladen. Met de knoppen onder de code kies je de schermbreedte (📱 375, 💻 768, 🖥 1200) en het label rechtsonder toont het actieve breakpoint. Met "Controleer" kijk je na of je de juiste classes gebruikte. Je code wordt bewaard als je aangemeld bent.
Geef de drie blokken padding rondom (p-3) en ruimte onder (mb-2) en laat de container zelf ook padding boven en onder krijgen (py-4).
Maak van het kaartje een nette kaart: padding (p-4), een rand (border), afgeronde hoeken (rounded-3), een schaduw (shadow-sm), een witte achtergrond (bg-white) en een breedte van de helft, gecentreerd (w-50 mx-auto).
Maak een knop (btn btn-primary position-relative) met de tekst “Winkelwagen” en een rode ronde badge (badge rounded-pill bg-danger) in de rechterbovenhoek (position-absolute top-0 start-100 translate-middle) met het getal 2.
🔍 Opzoekwerk — 5 Spacing, randen en formaat
Zoek het antwoord zelf op (internet, cursus, ...) en typ het hieronder. Wordt automatisch bewaard.
Tip: zoek op "CSS box model".
✓ opgeslagenTip: 1 rem = het lettertype van het root-element (meestal 16 px).
✓ opgeslagen✅ Testjezelf-quiz — 5 Spacing, randen en formaat
Beantwoord alle vragen en klik daarna op "Controleer". Je mag zo vaak opnieuw proberen als je wil.
Met flexbox schik je elementen in een rij of kolom, verdeel je de ruimte en centreer je moeiteloos. Bootstrap geeft je alle flex-eigenschappen als korte classes.
Wat is flexbox?
Standaard staan blokelementen onder elkaar. Zodra je d-flex op de ouder zet, worden de kinderen flex-items en staan ze naast elkaar in een rij. Daarna stuur je twee assen aan:
Hoofdas
De richting van de rij (horizontaal) of kolom (verticaal). Uitlijnen doe je met justify-content-….
Dwarsas
Loodrecht op de hoofdas. Uitlijnen doe je met align-items-….
Flexbox werkt met een ouder (d-flex en de uitlijning) en kinderen (die zelf kunnen groeien, krimpen of van plaats wisselen). Het Bootstrap-raster uit hoofdstuk 2 is zelf gebouwd op flexbox.
Speel met flexbox
Kies in de demo een richting en uitlijning en zie meteen wat er gebeurt. Onder het voorbeeld staat de bijhorende Bootstrap-class.
Richting en uitlijning
| Doel | Classes |
|---|---|
| rij (standaard) of kolom | flex-row · flex-column (ook flex-row-reverse) |
| hoofdas uitlijnen | justify-content-start · -center · -end · -between · -around · -evenly |
| dwarsas uitlijnen | align-items-start · -center · -end · -stretch |
| laten doorlopen | flex-wrap · flex-nowrap |
| per breakpoint | flex-column flex-md-row |
Het klassieke voorbeeld: een blok exact in het midden van de pagina zet je met d-flex justify-content-center align-items-center op de ouder.
Eén kind aansturen
Ook een kind heeft eigen classes: flex-grow-1 (neem alle vrije ruimte), flex-shrink-0 (niet krimpen), ms-auto (duw naar rechts met automatische marge), align-self-end (dit ene kind onderaan) en order-… (volgorde). Zo maak je een menubalk met het logo links en de knoppen rechts: geef het eerste knoppenitem ms-auto.
Flex of grid?
Gebruik het 12-kolommenraster (row/col) voor de grote pagina-indeling en flex-utilities voor uitlijning binnen een component (menu, kaart, knoppenrij). Ze vullen elkaar aan: in een col-md-6 kan je best een d-flex zetten.
d-flexop de ouder maakt een rij.justify-content-…= hoofdas,align-items-…= dwarsas.flex-column= kolom,flex-wrap= laten doorlopen,gap-3= ruimte ertussen.ms-autoduwt een kind naar rechts,flex-grow-1laat het groeien.
Verwerk wat je hierboven las met de onderdelen hieronder. Ze horen bij deze theorie.
🧪 Oefeningen — 6 Flexbox
Typ de HTML in het vak en klik op Uitvoeren: Bootstrap is hier al voor je ingeladen. Met de knoppen onder de code kies je de schermbreedte (📱 375, 💻 768, 🖥 1200) en het label rechtsonder toont het actieve breakpoint. Met "Controleer" kijk je na of je de juiste classes gebruikte. Je code wordt bewaard als je aangemeld bent.
Maak van de balk een flex-rij (d-flex) waarin de items verticaal gecentreerd staan (align-items-center), met ruimte ertussen (gap-3). Het logo blijft links; de eerste link krijgt ms-auto zodat de links rechts staan.
Centreer het blauwe blokje horizontaal én verticaal in het lichtblauwe vak met flexbox: d-flex, justify-content-center en align-items-center op het vak.
Maak een flex-container met drie kaartjes (p-3 bg-light border) die op een telefoon onder elkaar (flex-column) en vanaf md naast elkaar (flex-md-row) staan, met gap-3.
🔍 Opzoekwerk — 6 Flexbox
Zoek het antwoord zelf op (internet, cursus, ...) en typ het hieronder. Wordt automatisch bewaard.
Tip: justify-content en align-items zijn de hoofdrolspelers.
✓ opgeslagenTip: standaard krimpen de items.
✓ opgeslagen✅ Testjezelf-quiz — 6 Flexbox
Beantwoord alle vragen en klik daarna op "Controleer". Je mag zo vaak opnieuw proberen als je wil.
De eerste echte Bootstrap-componenten: knoppen in allerlei kleuren en maten, groepen knoppen, badges, meldingen (alerts), voortgangsbalken en spinners.
Knoppen
Een knop krijgt altijd de basisclass btn plus een variant uit het kleurenpalet: btn-primary, btn-success, btn-danger… Met btn-outline-… krijg je een knop met enkel een rand. Werkt op <button>, <a> en <input>.
Maten en toestanden
| Wat? | Classes |
|---|---|
| groot / klein | btn-lg · btn-sm |
| volle breedte | w-100, of een d-grid-ouder |
| uitgeschakeld | attribuut disabled (bij een link: class disabled) |
| actief | active |
| laden | een spinner-border spinner-border-sm in de knop |
Een knop die er niet uit mag zien als een knop maar wel als een link (bv. “Meer info”)? Gebruik btn btn-link.
Knoppengroepen
Zet knoppen naast elkaar in één balk met btn-group. Geef de groep role="group" en een aria-label. Met btn-toolbar combineer je meerdere groepen.
Badges
Een badge is een klein label, vaak een teller of status: <span class="badge text-bg-primary">. Met text-bg-… krijg je meteen een goed leesbare achtergrond-/tekstkleurcombinatie; met rounded-pill een ronde vorm.
Alerts
Een alert is een gekleurde melding: <div class="alert alert-success" role="alert">. Kies de context (success, danger, warning, info…), voeg een kop toe met alert-heading en links met alert-link. Een alert die de gebruiker kan wegklikken gebruikt alert-dismissible fade show en een sluitknop btn-close met data-bs-dismiss="alert" (dit werkt dankzij de Bootstrap-JavaScript, zonder dat je zelf code schrijft).
Voortgang en spinners
Een progress bar toont voortgang: een progress-vak met daarin een progress-bar waarvan je de breedte instelt (bv. style="width: 60%"). Voeg progress-bar-striped progress-bar-animated toe voor een bewegende streeppatroon. Een spinner (spinner-border of spinner-grow) toont dat er iets laadt.
Synthese
- Knop =
btn+ variant (btn-primary,btn-outline-danger), maatbtn-lg/btn-sm. - Groep:
btn-group; volle breedte:d-grid. - Badge:
badge text-bg-…; alert:alert alert-…. - Sluitbare alert:
alert-dismissible+btn-closemetdata-bs-dismiss="alert". - Progress:
progress+progress-barmet width; laden:spinner-border.
Verwerk wat je hierboven las met de onderdelen hieronder. Ze horen bij deze theorie.
🧪 Oefeningen — 7 Knoppen, badges en alerts
Typ de HTML in het vak en klik op Uitvoeren: Bootstrap is hier al voor je ingeladen. Met de knoppen onder de code kies je de schermbreedte (📱 375, 💻 768, 🖥 1200) en het label rechtsonder toont het actieve breakpoint. Met "Controleer" kijk je na of je de juiste classes gebruikte. Je code wordt bewaard als je aangemeld bent.
Geef de drie knoppen de juiste opmaak: Opslaan groen (btn btn-success), Annuleren grijs met alleen een rand (btn btn-outline-secondary) en Verwijderen rood (btn btn-danger). Zet ze met d-flex gap-2 netjes naast elkaar.
Maak een waarschuwing (alert alert-warning) die de gebruiker kan wegklikken: alert-dismissible fade show, role="alert" en een btn-close met data-bs-dismiss="alert". Klik na het uitvoeren op het kruisje!
Toon een voortgangsbalk van 75 %: een progress-vak met een progress-bar die op 75 % staat (width: 75%), groen (bg-success) en met de tekst 75%.
🔍 Opzoekwerk — 7 Knoppen, badges en alerts
Zoek het antwoord zelf op (internet, cursus, ...) en typ het hieronder. Wordt automatisch bewaard.
Tip: één hoofdactie per scherm.
✓ opgeslagenTip: zoek op "ARIA attributes accessibility".
✓ opgeslagen✅ Testjezelf-quiz — 7 Knoppen, badges en alerts
Beantwoord alle vragen en klik daarna op "Controleer". Je mag zo vaak opnieuw proberen als je wil.
De kaart (card) is het populairste Bootstrap-component: een vak met afbeelding, titel, tekst en knop. Daarnaast leer je lijsten (list-group), accordeons en tabellen.
De kaart
Een card is een flexibele container voor gegroepeerde inhoud. Elke kaart bestaat uit een aantal onderdelen die je zelf kiest:
| Class | Onderdeel |
|---|---|
card | het omhullende vak |
card-img-top | afbeelding bovenaan (loopt over de volle breedte) |
card-body | de padding-zone voor de inhoud |
card-title · card-subtitle | titel en ondertitel |
card-text | gewone tekst |
card-header · card-footer | balk boven- en onderaan |
card-link | link in de kaart |
Kaarten in het raster
Zet kaarten in een row met kolommen, zodat ze meeschalen. Met h-100 op de kaart worden alle kaarten in een rij even hoog, ook als de tekst verschilt. Probeer het lab: kies verschillende schermbreedtes en let op het aantal kaarten per rij.
Kop, voet en gekleurde kaarten
Met card-header en card-footer voeg je balken toe. Kleur de hele kaart met text-bg-primary of gebruik een gekleurde rand (border-success). Een afbeelding als achtergrond met tekst erover doe je met card-img-overlay.
List group
Een list-group is een nette lijst met items (list-group-item). Handig voor menu’s, instellingen of een overzicht. Met list-group-item-action op een <a> worden de items klikbaar; met active markeer je de huidige, en list-group-flush haalt de buitenrand weg (handig in een kaart).
Accordeon
Een accordeon klapt onderdelen open en dicht en is ideaal voor veelgestelde vragen. Elk item heeft een knop met data-bs-toggle="collapse" en data-bs-target="#…" dat naar het id van het in- en uitklapbare deel wijst. Met data-bs-parent zorg je dat er telkens maar één open is.
Synthese
- Kaart:
card→card-img-top+card-body(card-title,card-text, knop). - Kaarten in
row+col-…;h-100maakt ze even hoog. - Lijst:
list-group+list-group-item, klikbaar met-action. - Accordeon:
data-bs-toggle="collapse"endata-bs-targetkoppelen knop en inhoud.
Verwerk wat je hierboven las met de onderdelen hieronder. Ze horen bij deze theorie.
🧪 Oefeningen — 8 Kaarten en lijsten
Typ de HTML in het vak en klik op Uitvoeren: Bootstrap is hier al voor je ingeladen. Met de knoppen onder de code kies je de schermbreedte (📱 375, 💻 768, 🖥 1200) en het label rechtsonder toont het actieve breakpoint. Met "Controleer" kijk je na of je de juiste classes gebruikte. Je code wordt bewaard als je aangemeld bent.
Maak van de losse elementen een echte kaart: de kolom krijgt een card (met h-100), de afbeelding wordt card-img-top, titel/tekst/link komen in een card-body met card-title en card-text, en de link wordt een knop btn btn-primary.
Maak een rij met drie kaarten (elk card in een col-md-4) met een card-body en een card-title. De rij heeft g-3.
Maak een menu met een list-group van drie klikbare items (<a> met list-group-item list-group-item-action): Home, Profiel en Instellingen. Het eerste item is het actieve (active).
Maak een accordeon (accordion) met twee items. Elk item bestaat uit accordion-item, een accordion-header met accordion-button (met data-bs-toggle="collapse" en data-bs-target), en een accordion-collapse collapse met een accordion-body. Het id in data-bs-target moet overeenkomen met het id van het in-/uitklapdeel!
🔍 Opzoekwerk — 8 Kaarten en lijsten
Zoek het antwoord zelf op (internet, cursus, ...) en typ het hieronder. Wordt automatisch bewaard.
Tip: zoek op "bootstrap 5 card group".
✓ opgeslagenTip: afbeelding, titel, prijs, knop.
✓ opgeslagen✅ Testjezelf-quiz — 8 Kaarten en lijsten
Beantwoord alle vragen en klik daarna op "Controleer". Je mag zo vaak opnieuw proberen als je wil.
Elke site heeft een menu. Je bouwt een responsive navbar die op een telefoon in een hamburgermenu verandert, plus tabs, pills, broodkruimels en paginering.
De navbar
De navbar is de menubalk bovenaan. Ze is standaard responsive: op een klein scherm klapt ze in tot een hamburgerknop. Onderdelen:
| Class | Onderdeel |
|---|---|
navbar navbar-expand-md | het omhullende element (<nav>); expand-md = vanaf md volledig uitgeklapt |
navbar-brand | logo of sitenaam |
navbar-toggler | de hamburgerknop (met data-bs-toggle="collapse") |
navbar-collapse collapse | het deel dat inklapt (id = doel van de knop) |
navbar-nav · nav-item · nav-link | de lijst met menu-items |
Kleur en thema bepaal je met bg-dark/bg-primary en data-bs-theme="dark" (lichte tekst). Klik in het lab op 375 en gebruik de hamburgerknop!
Dropdown in het menu en vaste plaats
Een dropdown zet je in een nav-item dropdown met een link nav-link dropdown-toggle (data-bs-toggle="dropdown") en een <ul class="dropdown-menu"> met dropdown-items. Met sticky-top blijft de navbar bovenaan plakken bij scrollen, met fixed-top ligt ze altijd vast (dan heeft je body wat padding-top nodig).
Tabs en pills
Met nav nav-tabs of nav nav-pills maak je lijstjes met tabbladen. Verbind je ze met een tab-content (en data-bs-toggle="tab"), dan werkt het als echte tabbladen waarbij elke tab zijn eigen inhoud toont.
Broodkruimels en paginering
Breadcrumbs tonen waar de bezoeker zich in de site bevindt: <nav aria-label="breadcrumb"><ol class="breadcrumb"> met breadcrumb-item-items, waarvan het laatste active is. Paginering hoort bij lange lijsten: pagination met page-item en page-link.
Synthese
- Navbar:
navbar navbar-expand-md+ brand + toggler +navbar-collapsemetnavbar-nav. - Het
data-bs-targetvan de toggler = het id van het inklapbare deel. - Dropdown:
dropdown+data-bs-toggle="dropdown"+dropdown-menu. - Tabs/pills:
nav-tabs/nav-pills+tab-content. - Breadcrumb en pagination hebben een
<nav aria-label>.
Verwerk wat je hierboven las met de onderdelen hieronder. Ze horen bij deze theorie.
🧪 Oefeningen — 9 Navigatie
Typ de HTML in het vak en klik op Uitvoeren: Bootstrap is hier al voor je ingeladen. Met de knoppen onder de code kies je de schermbreedte (📱 375, 💻 768, 🖥 1200) en het label rechtsonder toont het actieve breakpoint. Met "Controleer" kijk je na of je de juiste classes gebruikte. Je code wordt bewaard als je aangemeld bent.
Bouw de kale navigatie om tot een Bootstrap-navbar: navbar navbar-expand-md bg-dark met data-bs-theme="dark", een container-fluid, een navbar-brand, een navbar-toggler (met navbar-toggler-icon) dat een collapse navbar-collapse met id menu opent, en daarin een navbar-nav met nav-item/nav-link items. Test op 375 px!
Maak twee tabbladen: nav nav-tabs met twee nav-link-knoppen (data-bs-toggle="tab" en data-bs-target), en een tab-content met twee tab-panes waarvan de eerste show active is.
Maak een breadcrumb met drie niveaus: Home en Cursussen zijn links, Bootstrap is het actieve laatste item (active en aria-current="page"). Gebruik <nav aria-label="breadcrumb"> en <ol class="breadcrumb">.
🔍 Opzoekwerk — 9 Navigatie
Zoek het antwoord zelf op (internet, cursus, ...) en typ het hieronder. Wordt automatisch bewaard.
Tip: zoek op "hamburger menu UX Nielsen Norman".
✓ opgeslagenTip: data-bs-toggle="offcanvas".
✓ opgeslagen✅ Testjezelf-quiz — 9 Navigatie
Beantwoord alle vragen en klik daarna op "Controleer". Je mag zo vaak opnieuw proberen als je wil.
Bootstrap maakt van saaie invoervelden nette, consistente formulieren: tekstvelden, keuzelijsten, checkboxes, radioknoppen, switches, invoergroepen en validatiemeldingen.
Tekstvelden
Elk invoerveld krijgt de class form-control (nette breedte, rand en focus-effect) en een <label class="form-label"> ervoor. Koppel label en veld altijd met for en id: zo kan je op het label klikken en lezen schermlezers het voor.
Formulieren in het raster
Met het raster zet je velden naast elkaar en laat je ze op smalle schermen onder elkaar staan. Probeer het lab en test de breedtes.
Keuzelijsten, checkboxes, radio en switch
| Veld | Classes |
|---|---|
| keuzelijst | <select class="form-select"> |
| checkbox | form-check met form-check-input + form-check-label |
| radioknop | idem, met hetzelfde name voor de groep |
| switch | form-check form-switch |
| schuifbalk | form-range |
| bestand kiezen | form-control op type="file" |
Invoergroepen en zwevende labels
Met een input-group plak je tekst of knoppen vast aan een veld (input-group-text). Bij floating labels zweeft het label in het veld en schuift het naar boven zodra je typt: form-floating met eerst de input (met placeholder) en dán de label.
Validatie
Bootstrap toont validatie met de classes is-valid (groen) en is-invalid (rood) op het veld en een bericht in valid-feedback of invalid-feedback. Met HTML-attributen (required, minlength, type="email") en needs-validation + novalidate laat je de browser de controle doen; een klein stukje JavaScript zet dan was-validated op het formulier. Let op: validatie in de browser is enkel een gemak; controleer altijd ook op de server!
Synthese
- Tekstveld:
form-label+form-control, gekoppeld metfor/id. - Keuzelijst:
form-select; vinkje/radio/switch:form-check+form-check-input. - Naast elkaar: raster (
row g-3+col-md-6). - Validatie:
is-valid/is-invalid+valid-feedback/invalid-feedback. - Controleer altijd ook aan de serverkant.
Verwerk wat je hierboven las met de onderdelen hieronder. Ze horen bij deze theorie.
🧪 Oefeningen — 10 Formulieren
Typ de HTML in het vak en klik op Uitvoeren: Bootstrap is hier al voor je ingeladen. Met de knoppen onder de code kies je de schermbreedte (📱 375, 💻 768, 🖥 1200) en het label rechtsonder toont het actieve breakpoint. Met "Controleer" kijk je na of je de juiste classes gebruikte. Je code wordt bewaard als je aangemeld bent.
Gebruik Bootstrap-classes om het formulier op te maken: elk label wordt form-label, elk veld form-control, elk label-veld-paar zit in een mb-3 en de knop wordt btn btn-primary.
Maak een aanmeldformulier met: een e-mailveld (type="email", form-control, required), een wachtwoordveld (type="password", form-control), een checkbox “Onthoud mij” (form-check, form-check-input, form-check-label) en een knop btn btn-primary w-100.
Maak een formulier (row g-3) met voornaam en achternaam naast elkaar vanaf md (col-md-6), en daaronder een keuzelijst (form-select) over de volle breedte (col-12) met minstens twee opties.
🔍 Opzoekwerk — 10 Formulieren
Zoek het antwoord zelf op (internet, cursus, ...) en typ het hieronder. Wordt automatisch bewaard.
Tip: filter_var($mail, FILTER_VALIDATE_EMAIL).
✓ opgeslagenTip: het verdwijnt bij het typen.
✓ opgeslagen✅ Testjezelf-quiz — 10 Formulieren
Beantwoord alle vragen en klik daarna op "Controleer". Je mag zo vaak opnieuw proberen als je wil.
Gegevens tonen doe je met tabellen. Je leert nette, responsive tabellen maken, afbeeldingen met bijschrift (figure) en de gratis Bootstrap Icons gebruiken.
Een nette tabel
Een gewone HTML-tabel wordt met de class table meteen mooi opgemaakt. Voeg varianten toe door classes te combineren:
| Class | Effect |
|---|---|
table-striped | om-en-om gekleurde rijen (zebra) |
table-hover | rij licht op onder de muis |
table-bordered | randen rondom alle cellen |
table-sm | compacte tabel met minder padding |
table-dark | donkere tabel |
table-success … | een hele tabel, rij (tr) of cel kleuren |
align-middle | verticaal centreren in de cellen |
Responsive tabellen
Een brede tabel loopt op een telefoon uit het scherm. Zet de tabel in een <div class="table-responsive">: bij een te smal scherm verschijnt dan een horizontale scrollbalk in plaats van dat de hele pagina breder wordt. Met table-responsive-md geldt dat enkel onder md.
Afbeeldingen met bijschrift
Een afbeelding met tekst eronder zet je in een <figure class="figure"> met figure-img img-fluid en figure-caption. Voor een klein profielfoto’tje gebruik je rounded-circle met een vaste width/height, en met object-fit-cover snijd je de foto netjes bij zodat ze niet uitrekt.
Bootstrap Icons
Bootstrap Icons zijn meer dan 2000 gratis iconen (icons.getbootstrap.com). Je laadt ze in met een extra <link> naar het CSS-bestand (in deze cursus al gedaan) en gebruikt ze als <i class="bi bi-…"></i>. Het zijn lettertekens, dus je geeft ze grootte en kleur met gewone classes (fs-1, text-danger). Gebruik ze in knoppen, menu’s en lijsten, en geef een icoon zonder tekst een aria-label.
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.11.3/font/bootstrap-icons.min.css">
Synthese
table+table-striped,table-hover,table-bordered.- Brede tabel: in
table-responsive. thead,tbodyenscopezijn goed voor toegankelijkheid.- Foto met tekst:
figure+figcaption. - Iconen:
<i class="bi bi-…">, kleur en grootte via tekstclasses.
Verwerk wat je hierboven las met de onderdelen hieronder. Ze horen bij deze theorie.
🧪 Oefeningen — 11 Tabellen, figuren en iconen
Typ de HTML in het vak en klik op Uitvoeren: Bootstrap is hier al voor je ingeladen. Met de knoppen onder de code kies je de schermbreedte (📱 375, 💻 768, 🖥 1200) en het label rechtsonder toont het actieve breakpoint. Met "Controleer" kijk je na of je de juiste classes gebruikte. Je code wordt bewaard als je aangemeld bent.
Maak van deze kale tabel een nette Bootstrap-tabel met zebra-rijen en hover (table table-striped table-hover), een donkere kop (table-dark op de thead) en zet ze in een table-responsive zodat ze op een telefoon kan scrollen.
Maak twee knoppen met een icoon vóór de tekst: Opslaan (btn btn-success met bi bi-check-circle) en Verwijderen (btn btn-danger met bi bi-trash). Geef het icoon me-1 zodat er ruimte is tussen icoon en tekst.
Maak een profiel met een ronde foto (rounded-circle, object-fit-cover, breedte en hoogte 80, met alt-tekst) naast een naam (h5) en een grijze functie-regel (text-body-secondary). Zet het geheel in een d-flex met align-items-center en gap-3.
🔍 Opzoekwerk — 11 Tabellen, figuren en iconen
Zoek het antwoord zelf op (internet, cursus, ...) en typ het hieronder. Wordt automatisch bewaard.
Tip: zoek op "tables for layout accessibility".
✓ opgeslagenTip: gebruik de zoekbalk op de icons-pagina.
✓ opgeslagen✅ Testjezelf-quiz — 11 Tabellen, figuren en iconen
Beantwoord alle vragen en klik daarna op "Controleer". Je mag zo vaak opnieuw proberen als je wil.
Modals, dropdowns, tooltips, popovers, toasts, carousels en offcanvas werken dankzij de Bootstrap-JavaScript. Je hoeft bijna geen JavaScript te schrijven: het gaat via data-bs-attributen.
Hoe werkt Bootstrap-JavaScript?
Onderaan je pagina laad je de bundle in (hoofdstuk 1). Die zoekt naar data-attributen op je elementen. Zo werkt bijna alles volgens hetzelfde recept:
| data-bs-toggle | Component |
|---|---|
collapse | in- en uitklappen (menu, accordeon) |
modal | een pop-upvenster |
dropdown | uitklapmenu |
tab / pill | tabbladen |
offcanvas | inschuivend zijpaneel |
tooltip · popover | kleine tekstballonnen (moeten met JavaScript geactiveerd worden) |
Voor speciale situaties (bv. een modal openen na 5 seconden) gebruik je de JavaScript-API: new bootstrap.Modal(element).show().
Modal
Een modal is een pop-upvenster boven de pagina. De bouw is altijd: modal → modal-dialog → modal-content → modal-header / modal-body / modal-footer. De knop verwijst met data-bs-target naar het id van de modal; een sluitknop gebruikt data-bs-dismiss="modal". Voeg modal-dialog-centered toe om te centreren of modal-lg voor een grotere.
Dropdown, collapse en offcanvas
Een dropdown bestaat uit een knop met dropdown-toggle en data-bs-toggle="dropdown", gevolgd door een dropdown-menu. Met collapse toon of verberg je een stuk inhoud. Offcanvas is een paneel dat vanaf de zijkant inschuift (menu’s op mobiel, winkelwagen…).
Tooltip en popover
Een tooltip is een klein tekstballonnetje bij hover; een popover is een grotere met titel en inhoud bij klik. Ze zijn “opt-in”: je moet ze één keer met JavaScript activeren, omdat ze de bibliotheek Popper gebruiken. Zet de tekst in data-bs-title (tooltip) of data-bs-title en data-bs-content (popover).
Carousel
Een carousel toont een reeks slides (foto’s) die je kan doorbladeren. Belangrijk: elke slide is een carousel-item en precies één daarvan heeft ook active. De pijlen gebruiken data-bs-slide="prev"/"next", de puntjes data-bs-slide-to. Met data-bs-ride="carousel" loopt hij vanzelf.
Toast en de JavaScript-API
Een toast is een korte melding die na een paar seconden verdwijnt (denk aan “Opgeslagen!”). Toasts start je altijd met JavaScript, met new bootstrap.Toast(element).show(). Zo kan je ze koppelen aan een eigen gebeurtenis, bijvoorbeeld het resultaat van een AJAX-aanvraag.
Synthese
- Gebruik
data-bs-toggle+data-bs-target="#id"; sluiten metdata-bs-dismiss. - Modal:
modal›modal-dialog›modal-content› header/body/footer. - Tooltip, popover en toast moet je met JavaScript activeren.
- Carousel: precies één
carousel-item active. - De JavaScript-bundle (met Popper) moet onderaan de body staan.
Verwerk wat je hierboven las met de onderdelen hieronder. Ze horen bij deze theorie.
🧪 Oefeningen — 12 Interactieve componenten
Typ de HTML in het vak en klik op Uitvoeren: Bootstrap is hier al voor je ingeladen. Met de knoppen onder de code kies je de schermbreedte (📱 375, 💻 768, 🖥 1200) en het label rechtsonder toont het actieve breakpoint. Met "Controleer" kijk je na of je de juiste classes gebruikte. Je code wordt bewaard als je aangemeld bent.
Maak van het gewone vakje een echte modal: de knop opent hem (data-bs-toggle="modal" en data-bs-target="#mijnModal"). De structuur is modal fade (met id mijnModal) › modal-dialog › modal-content › modal-header (met modal-title), modal-body en modal-footer met een sluitknop (data-bs-dismiss="modal"). Klik na het uitvoeren op de knop!
Maak een dropdown (dropdown) met een knop btn btn-primary dropdown-toggle (data-bs-toggle="dropdown") en een dropdown-menu met drie dropdown-items.
Maak een knop (id="toon") die een toast (id="melding", class toast) laat verschijnen. Gebruik new bootstrap.Toast(...) (of getOrCreateInstance) en .show() in een klik-handler. Geef de toast een toast-body.
🔍 Opzoekwerk — 12 Interactieve componenten
Zoek het antwoord zelf op (internet, cursus, ...) en typ het hieronder. Wordt automatisch bewaard.
Tip: positionering van pop-ups en tooltips.
✓ opgeslagenTip: zoek op "modal accessibility focus trap".
✓ opgeslagen✅ Testjezelf-quiz — 12 Interactieve componenten
Beantwoord alle vragen en klik daarna op "Controleer". Je mag zo vaak opnieuw proberen als je wil.
Bootstrap zien alle sites aan… tenzij je het aanpast. Je leert de donkere modus, CSS-variabelen, je eigen CSS naast Bootstrap schrijven en enkele goede gewoonten.
Donkere modus
Sinds Bootstrap 5.3 werkt een kleurmodus met het attribuut data-bs-theme op het <html>-element (voor de hele pagina) of op één component. De waarden zijn light en dark: alle achtergronden, teksten, kaarten en formulieren passen zich meteen aan. Met een beetje JavaScript laat je de bezoeker wisselen (en onthoud je de keuze in localStorage).
CSS-variabelen
Bootstrap gebruikt CSS-variabelen (custom properties) zoals --bs-primary, --bs-body-bg of --bs-border-radius. Door ze te overschrijven verander je het uitzicht van de hele site, zonder Bootstrap zelf aan te raken. Overschrijf ze in je eigen CSS, op :root (globaal) of op één element (lokaal).
Een CSS-variabele lees je met var(--naam). Voorbeeld: background: var(--bs-primary); gebruikt de huidige primaire kleur.
Je eigen CSS toevoegen
Bootstrap dekt veel, maar niet alles. Voor je eigen stijlen schrijf je een eigen stylesheet en laad je die ná Bootstrap in, zodat jouw regels voorrang krijgen. Goede gewoonten:
- Pas Bootstrap-bestanden nooit rechtstreeks aan (bij een update zijn je wijzigingen weg).
- Geef eigen onderdelen een eigen class (
.mijn-hero), niet door bestaande Bootstrap-classes te overschrijven. - Zoek eerst of Bootstrap al een utility heeft; schrijf pas dan zelf CSS.
- Gebruik zo weinig
!importantmogelijk.
In een echte pagina ziet dat er zo uit:
index.html (head)<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet">
<link href="css/stijl.css" rel="stylesheet"> <!-- jouw CSS, ná Bootstrap --> Sass, npm en de custom builder
Wie diep wil aanpassen (eigen kleurenpalet, breakpoints, sommige componenten uitschakelen), werkt met de Sass-bronbestanden: je overschrijft variabelen zoals $primary vóór het importeren en compileert alles tot één kleiner CSS-bestand. Dat is een stap voor gevorderden (Node.js, npm, een bundler zoals Vite). Voor de meeste schoolprojecten volstaan CDN + eigen CSS en variabelen.
data-bs-theme="dark"schakelt de donkere modus in (ophtmlof één element).- CSS-variabelen (
--bs-primary…) overschrijf je in je eigen CSS. - Eigen stylesheet ná Bootstrap laden; eigen classes gebruiken.
- Bootstrap zelf nooit rechtstreeks aanpassen.
Verwerk wat je hierboven las met de onderdelen hieronder. Ze horen bij deze theorie.
🧪 Oefeningen — 13 Thema en aanpassen
Typ de HTML in het vak en klik op Uitvoeren: Bootstrap is hier al voor je ingeladen. Met de knoppen onder de code kies je de schermbreedte (📱 375, 💻 768, 🖥 1200) en het label rechtsonder toont het actieve breakpoint. Met "Controleer" kijk je na of je de juiste classes gebruikte. Je code wordt bewaard als je aangemeld bent.
Zet het thema van de kaart op donker met data-bs-theme="dark" (op het element met class card) en voeg shadow toe. Zet ook de knop op btn-outline-light in plaats van btn-primary.
Geef alles binnen het element met class merk een oranje primaire kleur: schrijf in een <style>-blok een regel voor .merk die --bs-primary en --bs-btn-bg (en --bs-btn-border-color) op #e0821c zet. Toon een btn btn-primary in dat element.
Schrijf een eigen class .banner (in <style>) met een background en color: white, en gebruik ze samen met Bootstrap-classes p-4, rounded en text-center op een element met een <h2> erin.
🔍 Opzoekwerk — 13 Thema en aanpassen
Zoek het antwoord zelf op (internet, cursus, ...) en typ het hieronder. Wordt automatisch bewaard.
Tip: window.matchMedia("(prefers-color-scheme: dark)").
✓ opgeslagenTip: bootswatch.com biedt thema’s als losse CSS via CDN.
✓ opgeslagen✅ Testjezelf-quiz — 13 Thema en aanpassen
Beantwoord alle vragen en klik daarna op "Controleer". Je mag zo vaak opnieuw proberen als je wil.
Tijd om alles samen te brengen. Je bouwt stap voor stap een complete, responsive pagina voor een bakkerij: navbar, hero, producten, formulier, modal en footer.
De opdracht
Je bouwt een eenpagina-website voor de bakkerij “De Krakeling”. De pagina moet op een telefoon, tablet en computer goed werken. Onderdelen:
- Navbar die inklapt op mobiel, met logo en 3 links;
- Hero met grote titel, lead-tekst en een knop;
- Producten: minstens 3 kaarten in een responsive raster;
- Contactformulier in een raster (voornaam/achternaam naast elkaar);
- Een modal (bv. “Openingsuren”);
- Footer met tekst gecentreerd.
Werk van boven naar onder. Test na elk onderdeel op 375 px en op 1200 px. Kijk in de documentatie (getbootstrap.com) als je de classes vergeten bent: zoek op de naam van het component.
Voorbeeld: de eerste drie onderdelen
Zo kan het begin eruitzien. Bekijk de opbouw, verander iets en test op de verschillende breedtes. Let op hoe sticky-top, row-cols-1 row-cols-md-3 en h-100 samenwerken.
Controlelijst voor je eindresultaat
- Staat de viewport-meta erin en laad je CSS én JS in?
- Werkt de pagina op 375 px zonder horizontale scrollbalk?
- Gebruik je het raster (container › row › col) correct?
- Zijn alle afbeeldingen responsive en hebben ze een alt-tekst?
- Zijn labels gekoppeld aan hun velden?
- Is het contrast goed leesbaar?
- Werken menu en modal met het toetsenbord?
Wat nu?
Je kent nu de basis van Bootstrap. Mogelijke vervolgstappen: een PHP-formulier laten verwerken (zie de PHP-cursus), je site publiceren op een webhost, een eigen kleurenpalet met Sass, of een ander framework leren zoals Tailwind CSS. Het belangrijkste blijft: veel oefenen en de documentatie leren gebruiken.
Verwerk wat je hierboven las met de onderdelen hieronder. Ze horen bij deze theorie.
🧪 Oefeningen — 14 Eindproject: een volledige site
Typ de HTML in het vak en klik op Uitvoeren: Bootstrap is hier al voor je ingeladen. Met de knoppen onder de code kies je de schermbreedte (📱 375, 💻 768, 🖥 1200) en het label rechtsonder toont het actieve breakpoint. Met "Controleer" kijk je na of je de juiste classes gebruikte. Je code wordt bewaard als je aangemeld bent.
Bouw het bovenste deel van de bakkerijsite in de <body>. Vereisten: (1) laad Bootstrap (viewport, CSS in de head, JS onderaan), (2) een navbar navbar-expand-md met navbar-brand, navbar-toggler en een navbar-collapse met minstens 3 nav-links, (3) een hero met display-4, lead en een btn btn-primary, (4) een raster met drie kaarten (col-md-4 met card, card-body en card-title).
Bouw het onderste deel: (1) een contactformulier met row g-3, voornaam en achternaam op col-md-6, een e-mailveld (type="email") en een berichtveld (<textarea class="form-control">) op col-12, en een btn btn-success-knop; (2) een modal “Openingsuren” (id="uren") die je opent met een knop (data-bs-toggle="modal"); (3) een footer (<footer class="bg-dark text-white text-center py-3">).
🔍 Opzoekwerk — 14 Eindproject: een volledige site
Zoek het antwoord zelf op (internet, cursus, ...) en typ het hieronder. Wordt automatisch bewaard.
Tip: zoek op "deploy static site free".
✓ opgeslagenTip: kant-en-klare componenten versus utility-first.
✓ opgeslagen✅ Testjezelf-quiz — 14 Eindproject: een volledige site
Beantwoord alle vragen en klik daarna op "Controleer". Je mag zo vaak opnieuw proberen als je wil.
⚠️ Je verliet deze pagina
Je wisselde van tabblad (of verliet de pagina) terwijl je bezig was met een oefening, opdracht of zelftest. Dit werd geregistreerd als het verlaten van de oefening en kan als vals spelen bestempeld worden.