Tailwind CSS Academy · leksjon

Varighet og easing

Kontroller hvor lenge overganger varer med duration-75 til duration-1000, og angi tidsfunksjonen med ease-in, ease-out og ease-in-out.

Leksjon 2 av 413 trinn

Varighet og easing er en gratis leksjon i Tailwind CSS Academy på CoddyKit. Dette er leksjon 2 av 4. Du kan lese hele leksjonen gratis nedenfor – og deretter øve praktisk i nettleseren med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Tailwind CSS Academy, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Tailwind CSS Academy inneholder totalt 4 leksjoner.

Varighet og tidsfunksjoner i bevegelsesdesign

To egenskaper styrer hvordan en CSS-overgang føles: varighet (hvor lenge animasjonen varer) og tidsfunksjon (hvordan animasjonen akselererer og bremser i løpet av denne tiden). Å velge riktig verdi er forskjellen mellom animasjoner som føles raske og tilsiktede, og animasjoner som føles trege eller mekaniske. Tailwind tilbyr utility-klasser for begge deler, slik at De enkelt kan finjustere bevegelsesfølelsen uten egendefinert CSS.

Utility-klasser for varighet

Tailwinds duration-*-utility-klasser angir CSS-egenskapen transition-duration. Verdiene går fra duration-75 (75 ms, svært raskt) til duration-1000 (1000 ms, ett helt sekund). Standardvarigheten når De bruker transition uten en duration-*-klasse, er 150 ms. De fleste brukergrensesnittinteraksjoner bør vare under 300 ms for å føles responsive – lengre varigheter passer bare for dramatiske animasjoner på sidenivå.

<!-- 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>

Velge riktig varighet

Varigheten bør samsvare med den opplevde størrelsen på endringen. Små interaksjoner, som knappepekere, fokusringer og endringer i lenkefarge, ser best ut ved 100–200 ms. Mellomstore overganger, som når en rullegardin vises, et kort utvides eller et verktøytips tones inn, fungerer godt ved 200–300 ms. Store bevegelser, som når et sidestolpepanel glir inn, en modal vises eller sider byttes, kan vare opptil 300–500 ms. Overskrid aldri 500 ms for UI-overganger – brukerne skal aldri føle at de venter på en animasjon.

<!-- 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>

Tidsfunksjoner (utjevning)

Tidsfunksjonen (eller utjevningsfunksjonen) styrer hvordan animasjonens fremdrift fordeles over tid. En lineær animasjon beveger seg med konstant hastighet. En ease-in-animasjon starter sakte og akselererer. En ease-out-animasjon starter raskt og bremser ned. En ease-in-out-animasjon starter og avsluttes sakte, med høy hastighet i midten. Ulike interaksjoner føles mest naturlige med ulike utjevninger – gode valg er en subtil, men viktig detalj i et gjennomarbeidet UI-design.

/* 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 */

Bruke ease-in kontra ease-out

Valget mellom ease-in og ease-out har en intuitiv betydning: ease-in bygger opp fart (passer godt for elementer som forlater skjermen eller skjules), fordi de starter sakte og øker hastigheten idet de forsvinner. ease-out bremser ned (passer godt for elementer som kommer inn på skjermen), fordi de ankommer raskt og finner plassen sin på en jevn måte. Dette gjenspeiler fysikken i den virkelige verden – ting som stopper, bremser vanligvis ned, mens ting som begynner å bevege seg, akselererer.

<!-- 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ønsteret ease-in-out

ease-in-out skaper den mest naturlige bevegelsen for de fleste UI-animasjoner. Det gjenspeiler hvordan fysiske objekter beveger seg: De starter i ro, øker til maksimal hastighet og bremser deretter tilbake til ro. Bruk det som standard for alle animasjoner der elementer beveger seg mellom posisjoner – sidestolpepaneler som glir, modaler som vises, kort som utvides og trekkspillbrytere føles alle mest naturlige 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>

Verktøyklasser for forsinkelse

delay-*-verktøyklassene legger inn en pause før overgangen begynner, ved hjelp av CSS-egenskapen transition-delay. Forsinkelser er nyttige for sekvensielle animasjoner – når en serie elementer vises etter hverandre, oppstår en kaskadeeffekt som føles gjennomarbeidet. Tailwind tilbyr forsinkelser fra delay-75 (75 ms) til delay-1000 (1000 ms). Bruk forsinkelser sparsomt for interaksjoner ved pekerbevegelse – forsinkelser som bare utløses ved pekerbevegelse, får grensesnittet til å føles tregt for brukerne.

<!-- 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>

Egendefinert varighet og utjevning i konfigurasjonen

Hvis designsystemet krever bestemte tidsverdier som ikke finnes i Tailwinds standardverdier – for eksempel duration-250 eller en egendefinert cubic-bezier-utjevning – kan du legge dem til i tailwind.config.js. Utvid transitionDuration med nye varighetsverdier og transitionTimingFunction med nye utjevningskurver. Egendefinert utjevning kan uttrykke merkevarens bevegelsesuttrykk, slik at animasjonene får en gjenkjennelig stil.

// 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
      },
    },
  },
};

Tidspunkt for overganger ved pekerbevegelser

En nyttig teknikk for interaksjoner ved pekerbevegelse er å bruke ulik varighet når elementet vises og skjules. Dette kan du oppnå ved å bruke ulike varigheter med responsive prefikser eller tilstandsprefikser. Vanligvis er overganger når pekeren føres inn, litt raskere enn når den føres ut – visningen føles snappy, mens skjulingen tones roligere ut. Dette krever litt egendefinert CSS eller manipulering av JavaScript-klasser, siden Tailwind ikke har en innebygd «un-hover»-variant.

/* 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>

Ytelse: will-change og transform

For elementer som animeres ofte, kan du gi nettleseren et hint om å flytte dem til sitt eget kompositorlag ved hjelp av will-change. Tailwind har ikke et innebygd will-change-verktøy i kjernen, men du kan legge til ett med vilkårlige verdier eller et egendefinert verktøy. Bruk likevel will-change: transform sparsomt – det sløser med minnet å flytte for mange elementer til egne lag, og det kan faktisk gjøre ting tregere.

@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>

Feilsøke overganger i DevTools

Chrome DevTools har utmerkede verktøy for feilsøking av overganger. Åpne panelet Animations (More tools → Animations) for å se alle animasjoner og overganger som kjører. Du kan skrubbe gjennom tidslinjen, spille av animasjoner på lavere hastighet (0.25x, 0.5x) og undersøke kurven for den beregnede tidsfunksjonen. Dermed blir det enkelt å kontrollere at valgene av varighet og utjevning ser nøyaktig ut slik du ønsker, uten å måtte bevege pekeren raskt for å rekke å se korte animasjoner.

Rask kontroll

Test forståelsen din av overgangsvarighet og utjevning i Tailwind CSS.

Oppsummering av leksjonen

I denne leksjonen lærte du at varighetsverktøyklassene fra duration-75 til duration-1000 styrer hvor lang tid overganger tar, at ease-out passer best for elementer som kommer inn på skjermen, mens ease-in passer for elementer som forlater den, og at delay-*-verktøyklassene legger inn pauser før overganger starter, slik at du kan lage sekvensielle animasjonseffekter. Neste gang utforsker vi Tailwinds innebygde keyframe-animasjoner for innlastings- og oppmerksomhetsmønstre.

Gratis å komme i gang

Lær deg HTML med en AI-veileder – gratis

Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.

Kurs
30
Leksjoner
120

Ofte stilte spørsmål

Er leksjonen «Varighet og easing» gratis?

Ja – hele teksten i «Varighet og easing» er gratis å lese her på nettet. For å øve interaktivt med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt, og for å låse opp resten av Tailwind CSS Academy-kurset, kan du oppgradere til CoddyKit PRO. Kurset i Tailwind CSS Academy inneholder totalt 4 leksjoner.

Hva lærer jeg i «Varighet og easing»?

Kontroller hvor lenge overganger varer med duration-75 til duration-1000, og angi tidsfunksjonen med ease-in, ease-out og ease-in-out. Du øver på Tailwind CSS Academy med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.

Trenger jeg erfaring for å begynne med Tailwind CSS Academy?

Ingen tidligere erfaring er nødvendig. Tailwind CSS Academy på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 2 av 4.

Hvor lang tid tar leksjonen «Varighet og easing»?

De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.

Kan jeg skrive og kjøre kode i denne Tailwind CSS Academy-leksjonen?

Ja. Alle Tailwind CSS Academy-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.

Alle leksjonene i dette kurset

  1. Transition-verktøy
  2. Varighet og easing
  3. Innebygde keyframe-animasjoner
  4. Egendefinerte animasjoner i konfigurasjonen
← Tilbake til Tailwind CSS Academy