Varaktighet och easing
Styr hur lång tid övergångar tar med duration-75 till duration-1000 och ange tidsfunktionen med ease-in, ease-out och ease-in-out.
Varaktighet och easing är en gratis lektion i Tailwind CSS Academy på CoddyKit. Detta är lektion 2 av 4. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för Tailwind CSS Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Tailwind CSS Academy innehåller totalt 4 lektioner.
Varaktighet och timing i motion design
Två egenskaper avgör hur en CSS-övergång känns: duration (hur länge animationen pågår) och timing function (hur animationen accelererar och bromsar in under den tiden). När dessa väljs rätt är skillnaden mellan animationer som känns snabba och avsiktliga och sådana som känns tröga eller mekaniska. Tailwind tillhandahåller utilities för båda, vilket gör det enkelt att finjustera rörelsekänslan utan egen CSS.
Utilities för varaktighet
Tailwinds utilities duration-* anger CSS-egenskapen transition-duration. Värdena sträcker sig från duration-75 (75 ms, mycket snabbt) till duration-1000 (1000 ms, en hel sekund). Standardvaraktigheten när Ni använder transition utan en klass för duration-* är 150 ms. De flesta interaktioner i användargränssnitt bör vara kortare än 300 ms för att kännas responsiva – längre varaktigheter passar endast för dramatiska animationer på sidnivå.
<!-- 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>Välj rätt varaktighet
Varaktigheten bör motsvara den upplevda storleken på förändringen. Små interaktioner, som hovring över knappar, fokusringar och färgförändringar på länkar, ser bäst ut vid 100–200 ms. Medelstora övergångar, som när en listruta visas, ett kort expanderas eller ett verktygstips tonas ut, fungerar bra vid 200–300 ms. Stora rörelser, som när ett sidofält skjuts in, en modalruta visas eller en sida byts ut, kan ta upp till 300–500 ms. Överskrid aldrig 500 ms för övergångar i användargränssnittet – användare ska aldrig känna att de väntar på en animering.
<!-- 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>Tidsfunktioner (mjukstart och mjukavslutning)
Tidsfunktionen (eller funktionen för mjukstart och mjukavslutning) styr hur animeringens förlopp fördelas över tid. En linjär animering rör sig med konstant hastighet. En ease-in börjar långsamt och accelererar. En ease-out börjar snabbt och bromsar in. En ease-in-out börjar och slutar långsamt, med hög hastighet i mitten. Olika interaktioner känns mest naturliga med olika mjukningar – att välja rätt är en subtil men viktig detalj i en väl genomarbetad design av användargränssnitt.
/* 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 */Använda ease-in jämfört med ease-out
Valet mellan ease-in och ease-out har en intuitiv innebörd: ease-in bygger upp fart och passar bra för element som lämnar skärmen eller fälls ihop, eftersom de börjar långsamt och ökar hastigheten när de försvinner. ease-out bromsar in och passar bra för element som kommer in på skärmen, eftersom de anländer snabbt och mjukt faller på plats. Detta återspeglar fysiken i verkligheten – saker som stannar tenderar att bromsa in, medan saker som börjar röra sig tenderar att accelerera.
<!-- 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>Mönstret ease-in-out
ease-in-out skapar den mest naturliga rörelsen för de flesta animeringar i användargränssnitt. Det efterliknar hur fysiska objekt rör sig: de börjar från stillastående, når sin högsta hastighet och bromsar sedan in till stillastående igen. Använd det som standard för alla animeringar där element flyttas mellan positioner – sidofält som skjuts in, modala fönster som visas, kort som expanderas och dragspelskomponenter som växlar känns alla mest naturliga med 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>Verktyg för fördröjning
Verktygen delay-* lägger till en paus innan övergången börjar genom CSS-egenskapen transition-delay. Fördröjningar är användbara för stegvisa animeringar – när en serie element visas efter varandra skapas en kaskadeffekt som känns genomarbetad. Tailwind tillhandahåller fördröjningar från delay-75 (75 ms) till delay-1000 (1000 ms). Använd fördröjningar sparsamt för hovringsinteraktioner – fördröjningar som endast utlöses vid hovring kan få gränssnittet att kännas trögt för användaren.
<!-- 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>Anpassad varaktighet och mjukning i konfigurationen
Om designsystemet kräver specifika tidsvärden som inte finns bland Tailwinds standardvärden – till exempel duration-250 eller en anpassad cubic-bezier-mjukning – lägger du till dem i tailwind.config.js. Utöka transitionDuration med nya varaktighetsvärden och transitionTimingFunction med nya mjukningskurvor. Anpassad mjukning kan förmedla ert varumärkes rörelsekaraktär och göra animeringarna tydligt förknippade med just ert varumärke.
// 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
},
},
},
};Övergångstiming för hovringsinteraktioner
En användbar teknik för hovringsinteraktioner är att ha olika tidsinställningar för när ett element visas och försvinner. Det kan uppnås genom att tillämpa olika varaktigheter med responsiva prefix eller tillståndsprefix. Vanligast är att övergången när pekaren förs över ett element är något snabbare än övergången när den förs bort – inträdet känns snabbt och utträdet tonas ut mjukare. Detta kräver en liten mängd anpassad CSS eller manipulering av klasser med JavaScript, eftersom Tailwind inte har någon inbyggd variant för när hovring avslutas.
/* 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>Prestanda: will-change och transform
För element som animeras ofta kan du ge webbläsaren en antydan om att de ska flyttas till ett eget kompositlager med will-change. Tailwind har inget inbyggt will-change-verktyg i kärnan, men du kan lägga till ett via godtyckliga värden eller ett anpassat verktyg. Använd dock will-change: transform sparsamt – om för många element flyttas till egna lager slösas minne och prestandan kan faktiskt försämras.
@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>Felsöka övergångar i DevTools
Chrome DevTools har utmärkta verktyg för felsökning av övergångar. Öppna panelen Animations (More tools → Animations) för att se alla animeringar och övergångar som körs. Du kan dra genom tidslinjen, spela upp animeringar igen i lägre hastighet (0.25x, 0.5x) och granska kurvan för den beräknade tidsfunktionen. Det gör det enkelt att kontrollera att dina val av varaktighet och mjukning ser ut precis som avsett, utan att du behöver hovra snabbt för att hinna se korta animeringar.
Snabb kontroll
Testa dina kunskaper om övergångars varaktighet och mjukning i Tailwind CSS.
Sammanfattning av lektionen
I den här lektionen lärde du dig att verktyg för varaktighet från duration-75 till duration-1000 styr hur lång tid övergångar tar, att ease-out passar bäst för element som kommer in på skärmen och ease-in för element som lämnar den, samt att verktygen delay-* lägger till pauser innan övergångar börjar och möjliggör stegvisa animeringseffekter. Härnäst utforskar vi Tailwinds inbyggda keyframe-animeringar för laddnings- och uppmärksamhetsmönster.
Lär dig HTML med en AI-lärare – gratis
Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.
- Kurser
- 30
- Lektioner
- 120
Vanliga frågor
Är lektionen ”Varaktighet och easing” gratis?
Ja – hela texten till ”Varaktighet och easing” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i Tailwind CSS Academy, kan Ni uppgradera till CoddyKit PRO. Kursen i Tailwind CSS Academy innehåller totalt 4 lektioner.
Vad lär jag mig i ”Varaktighet och easing”?
Styr hur lång tid övergångar tar med duration-75 till duration-1000 och ange tidsfunktionen med ease-in, ease-out och ease-in-out. Ni övar på Tailwind CSS Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.
Behöver jag någon erfarenhet för att börja lära mig Tailwind CSS Academy?
Du behöver inga förkunskaper. Utbildningen i Tailwind CSS Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 2 av 4.
Hur lång tid tar lektionen ”Varaktighet och easing”?
De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.
Kan jag skriva och köra kod i den här Tailwind CSS Academy-lektionen?
Ja. Varje Tailwind CSS Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.
Alla lektioner i den här kursen
- Övergångsverktyg
- Varaktighet och easing
- Inbyggda keyframe-animationer
- Anpassade animationer i konfigurationen