Duur en easing
Bepaal hoelang transitions duren met duration-75 tot en met duration-1000 en stel de timingfunctie in met ease-in, ease-out en ease-in-out.
Duur en easing is een gratis Tailwind CSS Academy-les op CoddyKit. Dit is les 2 van 4. Je kunt de volledige les hieronder gratis lezen en daarna in de browser praktisch oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Tailwind CSS Academy. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Tailwind CSS Academy bevat in totaal 4 lessen.
Duur en timing in bewegingsontwerp
Twee eigenschappen bepalen hoe een CSS-overgang aanvoelt: duur (hoe lang de animatie duurt) en timingfunctie (hoe de animatie in die tijd versnelt en vertraagt). Als je deze goed instelt, voelen animaties vlot en doelbewust aan in plaats van traag of mechanisch. Tailwind biedt voor beide utilities, zodat je het gevoel van beweging eenvoudig kunt afstellen zonder aangepaste CSS.
Utilities voor de duur
De duration-*-utilities van Tailwind stellen de CSS-eigenschap transition-duration in. De waarden lopen van duration-75 (75 ms, zeer vlot) tot duration-1000 (1000 ms, een volledige seconde). De standaardduur wanneer je transition gebruikt zonder een klasse duration-* is 150 ms. De meeste interacties in een interface moeten korter dan 300 ms zijn om responsief aan te voelen — langere duur is alleen geschikt voor dramatische animaties op paginaniveau.
<!-- Available duration utilities -->
duration-75 → 75ms
duration-100 → 100ms
duration-150 → 150ms (default)
duration-200 → 200ms
duration-300 → 300ms
duration-500 → 500ms
duration-700 → 700ms
duration-1000 → 1000ms
<!-- Example: fast button color change -->
<button class="bg-blue-600 hover:bg-blue-700 text-white px-4 py-2 rounded-lg transition-colors duration-150">
Snappy button
</button>De juiste duur kiezen
De duur moet aansluiten bij hoe groot de wijziging aanvoelt. Kleine interacties zoals de hoverstatus van een knop, focusranden en veranderingen van linkkleur zien er het best uit bij 100–200 ms. Gemiddelde overgangen zoals het verschijnen van een vervolgkeuzemenu, het uitklappen van een kaart of het vervagen van een tooltip werken goed bij 200–300 ms. Grote bewegingen zoals een zijbalk die naar binnen schuift, een modaal venster dat verschijnt of overgangen tussen pagina's kunnen 300–500 ms duren. Overschrijd nooit 500 ms voor UI-overgangen — gebruikers mogen nooit het gevoel krijgen dat ze op een animatie wachten.
<!-- 150ms: button hover (small interaction) -->
<button class="transition-colors duration-150 hover:bg-blue-700">Button</button>
<!-- 200ms: card shadow depth change (medium) -->
<div class="transition-shadow duration-200 hover:shadow-lg">Card</div>
<!-- 300ms: dropdown fade in (larger change) -->
<div class="transition-opacity duration-300 opacity-0 data-open:opacity-100">Dropdown</div>
<!-- 500ms: modal entrance (dramatic) -->
<div class="transition-all duration-500 scale-95 data-open:scale-100">Modal</div>Timingfuncties (easing)
De timingfunctie (of easingfunctie) bepaalt hoe de voortgang van de animatie over de tijd wordt verdeeld. Een lineaire animatie beweegt met een constante snelheid. Een ease-in begint langzaam en versnelt. Een ease-out begint snel en vertraagt. Een ease-in-out begint en eindigt langzaam, met een snel middengedeelte. Verschillende interacties voelen het natuurlijkst aan met verschillende easingfuncties — de juiste keuze is een subtiel maar belangrijk detail in een verfijnd UI-ontwerp.
/* Tailwind easing utilities */
ease-linear → cubic-bezier(0, 0, 1, 1) /* constant speed */
ease-in → cubic-bezier(0.4, 0, 1, 1) /* slow start, fast end */
ease-out → cubic-bezier(0, 0, 0.2, 1) /* fast start, slow end */
ease-in-out → cubic-bezier(0.4, 0, 0.2, 1) /* slow start AND end */ease-in versus ease-out gebruiken
De keuze tussen ease-in en ease-out heeft een intuïtieve betekenis: ease-in bouwt momentum op (geschikt voor elementen die het scherm verlaten of inklappen), omdat ze langzaam beginnen en versnellen terwijl ze verdwijnen. ease-out vertraagt (geschikt voor elementen die het scherm binnenkomen), omdat ze snel aankomen en soepel op hun plek tot stilstand komen. Dit weerspiegelt de natuurkunde uit de echte wereld — dingen die stoppen vertragen meestal, en dingen die beginnen versnellen meestal.
<!-- ease-out: element slides INTO view (decelerates on arrival) -->
<div class="-translate-x-full hover:translate-x-0 transition-transform duration-300 ease-out">
Slides in from left, decelerates to stop
</div>
<!-- ease-in: element exits screen (accelerates on departure) -->
<div class="translate-x-0 hover:translate-x-full transition-transform duration-300 ease-in">
Slides out to right, accelerating as it exits
</div>Het ease-in-out-patroon
ease-in-out zorgt bij de meeste UI-animaties voor de natuurlijkst aanvoelende beweging. Het weerspiegelt hoe fysieke objecten bewegen: ze beginnen vanuit stilstand, bouwen snelheid op tot een maximum en vertragen daarna weer tot stilstand. Gebruik dit als standaard voor elke animatie waarbij elementen tussen posities bewegen — schuivende zijbalken, openende modale vensters, uitklappende kaarten en accordeonknoppen voelen allemaal het natuurlijkst aan met ease-in-out.
<!-- ease-in-out: sidebar slide-in (feels most natural) -->
<aside class="-translate-x-full group-open:translate-x-0
transition-transform duration-300 ease-in-out
fixed left-0 top-0 h-full w-64 bg-white shadow-xl">
Sidebar content
</aside>
<!-- Accordion expand: ease-in-out for natural feel -->
<div class="max-h-0 overflow-hidden group-open:max-h-96
transition-all duration-300 ease-in-out">
Accordion content
</div>Hulpmiddelen voor vertraging
De hulpprogramma's delay-* voegen een pauze toe voordat de overgang begint, met behulp van de CSS-eigenschap transition-delay. Vertragingen zijn nuttig voor trapsgewijze animaties — als een reeks elementen na elkaar verschijnt, ontstaat een trapsgewijs effect dat verfijnd aanvoelt. Tailwind biedt vertragingen van delay-75 (75 ms) tot delay-1000 (1000 ms). Gebruik vertragingen spaarzaam bij hoverinteracties — vertragingen die alleen bij hover worden geactiveerd, voelen voor gebruikers niet responsief aan.
<!-- Staggered card entrance animations -->
<div class="opacity-0 translate-y-4 animate-show" style="animation-delay: 0ms">Card 1</div>
<div class="opacity-0 translate-y-4 animate-show" style="animation-delay: 100ms">Card 2</div>
<div class="opacity-0 translate-y-4 animate-show" style="animation-delay: 200ms">Card 3</div>
<!-- Or with Tailwind delay utilities -->
<div class="... transition delay-0">First item</div>
<div class="... transition delay-100">Second item</div>
<div class="... transition delay-200">Third item</div>Aangepaste duur en easing in de configuratie
Als je ontwerpsysteem specifieke timingwaarden vereist die niet in de standaardwaarden van Tailwind staan — zoals duration-250 of een aangepaste cubic-bezier-easing — voeg je die toe in tailwind.config.js. Breid transitionDuration uit voor nieuwe duurwaarden en transitionTimingFunction voor nieuwe easingcurven. Met aangepaste easing kun je het bewegingskarakter van je merk vastleggen, zodat animaties herkenbaar als die van jouw merk aanvoelen.
// tailwind.config.js
module.exports = {
theme: {
extend: {
transitionDuration: {
'250': '250ms',
'400': '400ms',
'2000': '2000ms',
},
transitionTimingFunction: {
'spring': 'cubic-bezier(0.34, 1.56, 0.64, 1)', // overshoots then settles
'smooth': 'cubic-bezier(0.4, 0.0, 0.2, 1)', // material design standard
'sharp': 'cubic-bezier(0.4, 0.0, 0.6, 1)', // sharp accelerate/decelerate
},
},
},
};Timing van overgangen voor hoverinteracties
Een handige techniek voor hoverinteracties is verschillende timings voor het binnenkomen en verlaten te gebruiken. Dat bereik je door verschillende duurwaarden toe te passen met responsieve voorvoegsels of statusvoorvoegsels. Meestal zijn overgangen bij het binnenkomen via hover iets sneller dan bij het verlaten — het binnenkomen voelt vlot aan en het verdwijnen verloopt zachter. Hiervoor is een kleine hoeveelheid aangepaste CSS of JavaScript-manipulatie van klassen nodig, omdat Tailwind geen ingebouwde variant voor 'hover verlaten' heeft.
/* CSS: different timing for enter vs exit */
.hover-item {
@apply transition-all duration-300 ease-out; /* exit timing */
}
.hover-item:hover {
@apply duration-150; /* shorter on enter (faster response) */
/* Note: Tailwind generates .hover\:duration-150 for this */
}
<!-- Alternative: use hover:duration-* directly in HTML -->
<div class="transition-colors duration-300 hover:duration-150
bg-gray-100 hover:bg-blue-100">
Fast enter, slow exit
</div>Prestaties: will-change en transform
Bij elementen die vaak worden geanimeerd kun je de browser een aanwijzing geven om ze naar een eigen compositorlaag te promoveren met will-change. Tailwind heeft in de kern geen ingebouwd will-change-hulpmiddel, maar je kunt er een toevoegen via willekeurige waarden of een aangepast hulpmiddel. Gebruik will-change: transform echter spaarzaam — te veel elementen promoveren kost geheugen en kan de prestaties juist verlagen.
@layer utilities {
.will-change-transform {
will-change: transform;
}
.will-change-opacity {
will-change: opacity;
}
}
<!-- Apply to elements that animate very frequently -->
<div class="transition-transform duration-300 will-change-transform
hover:scale-105">
Frequently animated card (promoted layer)
</div>Overgangen debuggen in DevTools
Chrome DevTools heeft uitstekende hulpmiddelen voor het debuggen van overgangen. Open het deelvenster Animations (More tools → Animations) om alle actieve animaties en overgangen te bekijken. Je kunt door de tijdlijn bladeren, animaties op lagere snelheid opnieuw afspelen (0.25x, 0.5x) en de berekende curve van de timingfunctie inspecteren. Zo kun je eenvoudig controleren of je keuzes voor duur en easing er precies uitzien zoals bedoeld, zonder snel te hoeven hoveren om snelle animaties te vangen.
Korte controle
Test je begrip van de duur en easing van overgangen in Tailwind CSS.
Samenvatting van de les
In deze les heb je geleerd dat duurhulpmiddelen van duration-75 tot duration-1000 bepalen hoelang overgangen duren, dat ease-out het best is voor elementen die het scherm binnenkomen en ease-in voor elementen die het scherm verlaten, en dat delay-*-hulpmiddelen pauzes toevoegen voordat overgangen beginnen, waardoor trapsgewijze animatie-effecten mogelijk worden. Hierna bekijken we de ingebouwde keyframe-animaties van Tailwind voor laad- en aandachtsgedrag.
Leer HTML met een AI-tutor — gratis
Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.
- Cursussen
- 30
- Lessen
- 120
Veelgestelde vragen
Is de les “Duur en easing” gratis?
Ja — de volledige tekst van “Duur en easing” kun je hier gratis op het web lezen. Als je interactief wilt oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is, en de rest van de cursus Tailwind CSS Academy wilt ontgrendelen, kun je upgraden naar CoddyKit PRO. De cursus Tailwind CSS Academy bevat in totaal 4 lessen.
Wat leer ik in “Duur en easing”?
Bepaal hoelang transitions duren met duration-75 tot en met duration-1000 en stel de timingfunctie in met ease-in, ease-out en ease-in-out. Je oefent met Tailwind CSS Academy door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.
Heb ik ervaring nodig om met Tailwind CSS Academy te beginnen?
Ervaring vooraf is niet nodig. Tailwind CSS Academy op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 2 van 4.
Hoe lang duurt de les “Duur en easing”?
De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.
Kan ik code schrijven en uitvoeren in deze les over Tailwind CSS Academy?
Ja. Elke les over Tailwind CSS Academy bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.