Curs Web Development
Curs HTML
Curs CSS
Curs Javascript
Curs PHP
Curs Phyton
Curs SQL
Curs SEO

Tranziții și animații CSS

Acest tutorial acoperă tot ce trebuie să știi despre tranziții și animații în CSS — de la concepte de bază, la tehnici avansate. Este structurat progresiv, astfel încât să poți învăța pas cu pas, chiar dacă pornești de la zero.

Tranziții CSS - Ghid complet

Tranzițiile CSS permit modificarea lină a valorilor proprietăților stilistice, fără a folosi JavaScript. În loc ca o schimbare să fie instantanee, ea se desfășoară gradual, oferind o experiență vizuală mai fluidă și mai plăcută.

Ce sunt tranzițiile

Tranzițiile sunt efecte vizuale care apar atunci când o proprietate CSS se modifică. Ele pot fi aplicate la hover, focus, activare sau orice altă schimbare de stare.

Proprietăți implicate

Exemplu simplu de tranziție

Tranziția aplicată mai jos modifică culoarea de fundal la hover, folosind forma extinsă:

🔧 Exemplu live - Tranziție de culoare

transition-property

Definește ce proprietate CSS va fi animată. Poate primi:

🔧 Exemplu live - transition-property

transition-duration

Definește cât timp durează tranziția. Valori acceptate:

🔧 Exemplu live - transition-duration

transition-timing-function

Definește modul în care se desfășoară tranziția în timp. Controlează viteza de evoluție a animației. Valori acceptate:

🔧 Exemplu live - transition-timing-function

transition-delay

Definește întârzierea înainte ca tranziția să înceapă. Valori acceptate:

🔧 Exemplu live - transition-delay

Forma prescurtată - transition

După ce ai înțeles cum funcționează proprietățile individuale (transition-property, transition-duration, transition-timing-function, transition-delay), poți folosi forma prescurtată transition pentru a le combina într-o singură linie.

Structura generală:>

transition: [property] [duration] [timing-function] [delay];

Exemplu:>

transition: background-color 1s ease 0.5s;

Această linie este echivalentă cu:

transition-property: background-color;
transition-duration: 1s;
transition-timing-function: ease;
transition-delay: 0.5s;
🔧 Exemplu live - Forma prescurtată

Exemplu - Tranziție multiplă cu formă prescurtată

Poți anima mai multe proprietăți în același timp, folosind forma prescurtată:

transition: background-color 0.5s ease, transform 0.3s ease-in;

Acest exemplu animă atât culoarea de fundal, cât și transformarea (scalare) la hover.

🔧 Exemplu live - Tranziție multiplă

Introducere în animații CSS

Animațiile CSS permit controlul detaliat asupra schimbărilor vizuale, folosind reguli @keyframes și proprietăți dedicate. Spre deosebire de tranziții, animațiile nu depind de o interacțiune directă (hover, click), ci pot fi declanșate automat și pot fi repetate, inversate sau sincronizate.

Diferența dintre tranziții și animații

🔧 Exemplu live - Tranziție vs Animație

Proprietăți implicate în animații CSS

🔧 Exemplu live - Animație completă

Exemplu simplu de animație - pulsare

Acest exemplu creează o animație de tip „puls” care mărește și micșorează un element în mod repetat.

🔧 Exemplu live - Pulsare

Exemplu simplu de animație - fade in

Acest exemplu face ca un element să apară treptat, crescând opacitatea de la 0 la 1.

🔧 Exemplu live - Fade In

Ce sunt funcțiile de temporizare?

Funcțiile de temporizare definesc curba de viteză> a unei animații. Ele determină cum se distribuie mișcarea pe durata animației. Cu alte cuvinte, controlează ritmul cu care un element se transformă în timp.

De exemplu, o animație poate începe lent și accelera spre final, sau invers. Aceste funcții oferă un control fin asupra modului în care utilizatorul percepe mișcarea.

Exemplu live - Funcții de temporizare
Exemplu live - Funcție de temporizare steps()
Exemplu live - Funcție de temporizare cubic-bezier()

Animații multiple și control avansat

CSS permite aplicarea mai multor animații simultan pe același element. Fiecare animație poate avea propriul nume, durată, funcție de temporizare și comportament. Prin combinarea lor, poți crea efecte complexe și dinamice.

În plus, proprietăți precum animation-delay, animation-fill-mode și animation-direction oferă control fin asupra modului în care animațiile se comportă înainte, în timpul și după execuție.

Exemplu live - Animații multiple

Exemplu - Animație cu formă prescurtată

Poți aplica o animație completă într-o singură linie, folosind forma prescurtată:

animation: bounce 1s ease-in-out infinite alternate;

Acest exemplu face ca elementul să sară vertical la infinit, cu mișcare dus-întors.

🔧 Exemplu live - Animație prescurtată

Control avansat al animațiilor

CSS-ul e bun pentru efecte simple, dar dacă vrei să controlezi animațiile cu precizie, intră în scenă JavaScript. Poți detecta când se termină o animație, să le sincronizezi între ele sau să le declanșezi condiționat.

1. Evenimente JavaScript: animationend, transitionend

Aceste evenimente se declanșează automat când o animație sau tranziție se încheie. Le poți folosi pentru a lansa alte acțiuni sau a schimba stilul.

🔧 Exemplu live - animationend

2. Sincronizare și chaining

Poți lansa o animație doar după ce alta s-a terminat, folosind animationend sau setTimeout. Asta îți permite să creezi efecte în lanț.

🔧 Exemplu live - chaining

3. Animații condiționate

Poți porni o animație doar dacă se îndeplinește o condiție - de exemplu, dacă un element are o clasă sau dacă utilizatorul face o acțiune.

🔧 Exemplu live - animație condiționată

Aplicații practice

Acum că stăpânești animațiile și controlul lor, e timpul să le aplici în interfață. Mai jos ai exemple reale, folosite în site-uri și aplicații moderne.

1. Hover effects

Un efect simplu, dar elegant, care oferă feedback vizual la interacțiune. În acest exemplu, cardul se ridică ușor și își schimbă culoarea la hover.

transition: transform 0.3s ease, background-color 0.3s ease;
🔧 Exemplu live - Hover effect

2. Loader animat

Un loader animat indică progresul sau așteptarea. Mai jos, un cerc pulsează continuu pentru a sugera activitate.

🔧 Exemplu live - Loader animat

3. Slide-in menu

Un meniu care se glisează din stânga, iar butonul de deschidere dispare când meniul e activ. La închidere, butonul reapare.

🔧 Exemplu live - Slide-in menu

4. Carduri animate

Cardurile pot avea efecte la apariție sau interacțiune. În exemplul de mai jos, ele se animă cu fade-in la încărcare.

🔧 Exemplu live - Carduri animate

5. Scroll-based animations (cu JS)

Elementele pot apărea cu efecte când intră în viewport.

Elementele se animă automat la scroll, folosind IntersectionObserver pentru a detecta momentul în care intră în viewport.

🔧 Exemplu live - Scroll-based animation cu IntersectionObserver

Optimizare și performanță

Animațiile pot îmbunătăți experiența utilizatorului, dar dacă nu sunt bine gândite, pot afecta performanța. În acest capitol, învățăm ce să animăm, cum să folosim GPU-ul și ce practici să aplicăm pentru un UI fluid.

1. Ce proprietăți sunt costisitoare

Nu toate proprietățile CSS sunt egale când vine vorba de performanță. Unele declanșează recalculări complexe și reflow-uri în browser.

❌ Costisitoare: width, height, top, left, margin  
✅ Recomandate: transform, opacity
🔧 Exemplu live - Proprietăți costisitoare vs eficiente

2. GPU vs CPU rendering

Proprietățile precum transform și opacity sunt accelerate de GPU, ceea ce le face ideale pentru animații fluide. Alte proprietăți sunt procesate de CPU și pot cauza sacadări.

animation: transform 1s ease; /* GPU-friendly */  
animation: width 1s ease;     /* CPU-intensive */
🔧 Exemplu live - GPU vs CPU rendering

3. Best practices

Ca să păstrezi animațiile rapide și fluide, urmează aceste recomandări:

🔧 Exemplu live - prefers-reduced-motion

Animațiile nu sunt doar decor — ele sunt parte din ritmul și personalitatea unei interfețe. Dar fără optimizare, frumusețea devine balast.

Alegerea proprietăților potrivite, folosirea GPU-ului și respectarea bunelor practici nu sunt opționale, ci esențiale.

Când performanța e fluidă, utilizatorul nu observă animația — o simte. Iar asta face diferența între un site care arată bine și unul care se simte viu.


🧠 Quiz - CSS Tranziții și Animații

Top