CSS Geavanceerd
🎯 Overzicht van de Sessie
- CSS Grid Layout
- Transities en Animaties
- CSS Variabelen (Custom Properties)
- Geavanceerde CSS-technieken
- CSS Best Practices
🚀 Leerdoelen
Aan het einde van dit hoofdstuk kun je:
- CSS Grid gebruiken voor complexe 2D lay-outs
- Vloeiende transities en keyframe-animaties maken
- CSS variabelen gebruiken voor onderhoudbare code
- Geavanceerde stylingtechnieken zoals gradiënten en schaduwen toepassen
- Best practices uit de industrie volgen voor CSS-organisatie
Deel 1: CSS Grid Layout
Wat is CSS Grid?
CSS Grid is een krachtig 2-dimensionaal lay-outsysteem (rijen EN kolommen) waarmee je eenvoudig complexe webontwerpen kunt maken.
.container {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 20px;
}
Grid vs Flexbox
| Kenmerk | Flexbox | Grid |
|---|---|---|
| Dimensie | 1D (Rij of Kolom) | 2D (Rij en Kolom) |
| Beste voor | Uitlijning, kleine componenten | Volledige pagina lay-outs, kaart-grids |
Deel 2: Transities & Animaties
Transities
Transities maken het mogelijk om eigenschapswaarden vloeiend te veranderen over een bepaalde tijdsduur.
.btn {
transition: background-color 0.3s ease;
}
.btn:hover {
background-color: #3498db;
}
Keyframe Animaties
Gebruik @keyframes voor complexere animaties met meerdere stappen.
@keyframes slideIn {
from { transform: translateX(-100%); }
to { transform: translateX(0); }
}
.box {
animation: slideIn 1s forwards;
}
Deel 3: CSS Variabelen
Variabelen (Custom Properties) slaan waarden op die hergebruikt kunnen worden in je stylesheet.
:root {
--primary-color: #2c3e50;
--spacing: 20px;
}
.header {
background-color: var(--primary-color);
padding: var(--spacing);
}
Deel 4: Geavanceerde Technieken
Gradiënten
linear-gradient(45deg, red, blue)
Schaduwen
box-shadow: 0 4px 8px rgba(0,0,0,0.1)
Object Fit
Bepaal hoe afbeeldingen hun containers vullen: cover, contain
Deel 5: Woordenschat
| Term | Definitie |
|---|---|
| Grid | Tweedimensionaal lay-outsysteem |
| fr unit | Fractionele eenheid voor grid-grootte |
| Transitie | Vloeiende verandering tussen twee staten |
| @keyframes | Bepaalt de stappen van een animatie |
| Custom Property | Een CSS-variabele (--naam) |
🏋️ Praktijkoefeningen
Beheers geavanceerde lay-outs en effecten met deze uitdagingen:
Oefening 1: Het Tijdschrift-Grid
Maak een complexe lay-out. Vereisten:
- Gebruik
display: gridmet minstens 3 kolommen en 3 rijen - Maak een header die over alle kolommen loopt
- Maak een "Hoofdartikel" gebied dat 2 kolommen en 2 rijen beslaat
- Voeg een zijbalk (sidebar) en een footer toe
Oefening 2: De Geanimeerde Loading Spinner
Maak een pure CSS-animatie. Vereisten:
- Maak een vierkante
divmet 50%border-radiusom er een cirkel van te maken - Geef het een dikke rand, maar maak één kant (bijv.
border-top) een andere kleur - Gebruik
@keyframesom een rotatie van 0deg naar 360deg te maken - Pas de animatie toe zodat deze oneindig blijft draaien
Oefening 3: Het Thema-Kaartsysteem
Gebruik CSS-variabelen voor eenvoudige updates. Vereisten:
- Definieer variabelen in
:root:--card-bg,--text-coloren--accent - Maak een kaart die deze variabelen gebruikt voor de styling
- Maak een tweede versie van de kaart door de variabelen te overschrijven in een specifieke class (bijv.
.dark-theme)
Oefening 4: De Hover-Galerij
Maak een vloeiende interactieve galerij. Vereisten:
- Toon drie afbeeldingen (of gekleurde divs) naast elkaar
- Gebruik
transition: transform 0.3s ease - Wanneer je eroverheen hovert, gebruik
transform: scale(1.1)en voeg eenbox-shadowtoe
Oefening 5: De Dashboard Widgets
Gebruik Grid Areas voor een strakke lay-out. Vereisten:
- Gebruik
grid-template-areasom te definiëren: "header header", "sidebar main", "footer footer" - Wijs je elementen toe aan deze gebieden met
grid-area - Voeg
gap: 20pxtoe om de widgets van elkaar te scheiden