Hoofdstuk 7

CSS Geavanceerd

Duur: 3 lessen • Grid, Animaties en Variabelen

🎯 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:

  1. CSS Grid gebruiken voor complexe 2D lay-outs
  2. Vloeiende transities en keyframe-animaties maken
  3. CSS variabelen gebruiken voor onderhoudbare code
  4. Geavanceerde stylingtechnieken zoals gradiënten en schaduwen toepassen
  5. 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

KenmerkFlexboxGrid
Dimensie1D (Rij of Kolom)2D (Rij en Kolom)
Beste voorUitlijning, kleine componentenVolledige 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

TermDefinitie
GridTweedimensionaal lay-outsysteem
fr unitFractionele eenheid voor grid-grootte
TransitieVloeiende verandering tussen twee staten
@keyframesBepaalt de stappen van een animatie
Custom PropertyEen 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: grid met 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 div met 50% border-radius om er een cirkel van te maken
  • Geef het een dikke rand, maar maak één kant (bijv. border-top) een andere kleur
  • Gebruik @keyframes om 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-color en --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 een box-shadow toe

Oefening 5: De Dashboard Widgets

Gebruik Grid Areas voor een strakke lay-out. Vereisten:

  • Gebruik grid-template-areas om te definiëren: "header header", "sidebar main", "footer footer"
  • Wijs je elementen toe aan deze gebieden met grid-area
  • Voeg gap: 20px toe om de widgets van elkaar te scheiden

Ga Verder met Leren

← Vorige: CSS Gevorderd Volgende: Responsive Design →