🎨 Aanpassen & best practices
Custom CSS bovenop Bootstrap, CSS-variabelen, en wanneer je iets anders kiest.
De juiste aanpak: Bootstrap + eigen CSS
Bootstrap geeft je een solide basis, maar elke site heeft zijn eigen look. De sleutel is begrijpen in welke volgorde je stijlen laadt en hoe specificity werkt.
<!-- Bootstrap NA je eigen CSS -->
<link rel="stylesheet" href="style.css">
<link rel="stylesheet" href="bootstrap.min.css">
Bootstrap overschrijft al je eigen stijlen
<!-- Bootstrap EERST, dan je eigen CSS -->
<link rel="stylesheet" href="bootstrap.min.css">
<link rel="stylesheet" href="style.css">
Jouw stijlen winnen altijd van Bootstrap
<button class="btn btn-primary btn-xl">
Definieer .btn-xl in je eigen CSS
/* style.css — geladen NA bootstrap */
.btn-primary {
background-color: #6d28d9; /* jouw paars */
border-color: #6d28d9;
}
Zie stap 2 →
!important
!important werkt, maar maakt onderhoud een nachtmerrie. Als je het nodig hebt, is de laadvolgorde of specificiteit waarschijnlijk het echte probleem.
Bootstrap CSS-variabelen overschrijven
Bootstrap 5 gebruikt uitgebreid CSS custom properties (variabelen). Overschrijf ze op :root of op component-niveau — geen Sass compilatie nodig.
/* style.css — geladen NA bootstrap */
:root {
/* Primaire kleur wijzigen naar paars */
--bs-primary: #6d28d9;
--bs-primary-rgb: 109, 40, 217;
/* Link kleur */
--bs-link-color: #6d28d9;
--bs-link-hover-color: #5b21b6;
/* Body achtergrond en tekst */
--bs-body-bg: #f8f5ff;
--bs-body-color: #1e1b4b;
/* Font */
--bs-font-sans-serif: 'Inter', sans-serif;
--bs-border-radius: 0.75rem;
}
/* Alleen knoppen aanpassen */
.btn {
--bs-btn-border-radius: 2rem;
--bs-btn-font-weight: 700;
}
/* Alleen cards aanpassen */
.card {
--bs-card-border-radius: 1rem;
--bs-card-box-shadow:
0 4px 24px rgba(0,0,0,.08);
}
Eigen componenten bovenop Bootstrap
Soms heeft Bootstrap geen klasse voor precies wat je wilt. Dan schrijf je gewoon eigen CSS — Bootstrap staat daar niet in de weg.
<!-- HTML: Bootstrap utilities + eigen class -->
<section class="hero-section text-center py-5">
<div class="container">
<h1 class="display-4 fw-bold">Welkom</h1>
<p class="lead text-muted">Bouw sneller met Bootstrap.</p>
<a href="#" class="btn btn-primary btn-lg">Aan de slag</a>
</div>
</section>
/* CSS: eigen klasse die Bootstrap aanvult */
.hero-section {
background: linear-gradient(135deg, #6d28d9 0%, #a21caf 100%);
color: white;
min-height: 40vh;
display: flex;
align-items: center;
}
.hero-section { ... }
.product-card { ... }
.user-avatar { ... }
.sidebar-nav { ... }
Beschrijft WAT het is, niet hoe het eruitziet
.big-blue-box { ... }
.red-text { ... }
.left-aligned { ... }
.rounded-corners { ... }
Die heeft Bootstrap al — en ze breken als het ontwerp wijzigt
Wanneer gebruik je Bootstrap — en wanneer niet?
Bootstrap is een uitstekend gereedschap, maar niet voor elke klus de juiste keuze. Kennen wanneer je het wél of niet inzet, maakt je een betere ontwikkelaar.
- 📋 Symfony admin-panels en back-office UI's
- 🚀 Snel een prototype of MVP bouwen
- 🏫 Leeromgevingen (dit platform!)
- 📱 Sites waarbij responsive gedrag belangrijk is maar design niet kritisch
- 🤝 Teams met weinig CSS-expertise
- 🎨 Sterk custom design dat Bootstrap-defaults overal overschrijft
- ⚡ Performance-kritische sites (Bootstrap is ~230KB)
- 🧩 Projecten die al een component library hebben (bijv. Material UI)
- 📦 Moderne JS-frameworks met eigen styling (Next.js + Tailwind)
Klaar-om-te-gebruiken componenten — knop, card, modal zijn al gestyled. Snel op gang, herkenbaar design.
<button class="btn btn-primary">
Opslaan
</button>
Utility-first — geen fertige componenten, je bouwt alles zelf op uit kleine klassen. Totale vrijheid, meer code.
<button class="bg-blue-600
hover:bg-blue-700 text-white
font-bold py-2 px-4 rounded">
Opslaan
</button>
In de praktijk: Bootstrap voor Symfony-projecten en traditionele webapps. Tailwind voor moderne JS-frameworks (React, Vue, Next.js) met een custom design.
Voor Symfony-projecten is Bootstrap een natuurlijke keuze. De combinatie van CDN (geen build-stap), bootstrap_5_layout.html.twig voor forms, en de beschikbare componenten maakt het een productieve keuze voor MBO/HBO-niveau projecten.
Bootstrap 4 vs Bootstrap 5
Bootstrap 4 gebruikt nog jQuery en heeft andere class-namen. Als je online een tutorial vindt die start met jquery.min.js, dan is het Bootstrap 4 — pas op.
| Onderwerp | Bootstrap 4 | Bootstrap 5 |
|---|---|---|
| JavaScript | Vereist jQuery | Vanilla JS, geen jQuery |
| Data attributen | data-toggle="modal" | data-bs-toggle="modal" |
| Margin/padding | ml- / mr- | ms- / me- (start/end) |
| Breakpoints | sm/md/lg/xl | sm/md/lg/xl/xxl |
| RTL | Geen native support | Ingebouwd RTL support |
| CSS variabelen | Beperkt | Uitgebreid, overal aanpasbaar |
- •
jquery.min.jsingeladen - •
data-toggle(zonder "bs-") - •
ml-3,mr-3klassen - • CDN URL bevat
@4.
- • Geen jQuery nodig
- •
data-bs-toggle - •
ms-3,me-3klassen - • CDN URL bevat
@5.
Oefening — Custom Bootstrap thema
Pas Bootstrap aan zodat het een groen thema krijgt:
- Overschrijf
--bs-primarynaar een groene kleur (bijv.#16a34a) - Geef knoppen afgeronde hoeken via
--bs-btn-border-radius: 2rem - Voeg een eigen
.hero-sectionklasse toe met een groene gradient achtergrond - Gebruik de hero voor een titel, tekst en een
btn btn-primaryknop
Oplossing tonen
<style>
:root {
--bs-primary: #16a34a;
--bs-primary-rgb: 22, 163, 74;
--bs-link-color: #16a34a;
}
.btn {
--bs-btn-border-radius: 2rem;
}
.hero-section {
background: linear-gradient(135deg, #16a34a, #065f46);
color: white;
padding: 3rem 0;
text-align: center;
}
</style>
<body>
<section class="hero-section">
<div class="container">
<h1 class="display-5 fw-bold mb-3">Groen Thema</h1>
<p class="lead mb-4 opacity-75">Bootstrap met eigen kleur via CSS-variabelen.</p>
<a href="#" class="btn btn-primary btn-lg px-5">Aan de slag</a>
</div>
</section>
</body>
🧠 Kennischeck
Bootstrap-track voltooid!
Je hebt alle 7 lessen doorlopen. Je kent nu: