🟩 NIVEL 1
Fundamentele animației în CSS
Transitions, keyframes, transforms, animații conduse de scroll. Stăpânește întâi uneltele ieftine, rapide și prietenoase cu GPU-ul.
🎯 XP la finalizare: 600 • 🏅 Badge deblocat
Lecția 1, Cele 4 proprietăți transform de memorat
Proprietate Utilizare translate Mută un element. translate-x, translate-y, translateZ pentru 3D. scale Mărește sau micșorează. scale sau scale-x / scale-y. rotate Rotire în 2D sau 3D: rotateX, rotateY, rotateZ. skew Înclină elementul. Folosește cu măsură, se învechește rapid vizual.
Transforms rulează pe GPU. Nu declanșează niciodată layout. Sunt cea mai ieftină mișcare din browser.
Lecția 2, Easing-ul, secretul mișcării profesioniste
Un easing greșit transformă o animație frumoasă într-una ieftină. Pe astea patru le folosești în 95% din cazuri,
ease-out (implicit), pentru lucruri care intră. Rapid la început, lent la final. Se simte primitor.
ease-in, pentru lucruri care ies. Lent la început, rapid la final. Se simte definitiv.
cubic-bezier(0.32, 0.72, 0, 1), easing-ul 'snap'. UI-urile moderne (Linear, Vercel, Apple) îl folosesc.
cubic-bezier(0.5, 1.5, 0.5, 1), un bounce jucăuș cu overshoot.
Lecția 3, Keyframes care nu se simt ieftine
📌 Cum folosești un Prompt Playbook
Când vezi simbolul 📜: 1) Copiază textul complet al promptului de mai jos. 2) Deschide unealta listată lângă "Best AI" (ex. claude.ai, lovable.dev). 3) Lipește și apasă Enter. Rezultatul pe care îl primești e punctul tău de plecare — de acolo îl rafinezi. Nu edita promptul înainte de prima rulare.
📜 Prompt Playbook,
Cel mai bun AI. • De ce.
@keyframes fadeUp {
from { opacity: 0; transform: translateY(24px); }
to { opacity: 1; transform: translateY(0); }
}
.fade-up { animation: fadeUp 700ms cubic-bezier(0.32, 0.72, 0, 1) both; }
.fade-up.delay-1 { animation-delay: 100ms; }
.fade-up.delay-2 { animation-delay: 200ms; }
.fade-up.delay-3 { animation-delay: 300ms; }
Adaugi în CSS o singură dată. Aplici clasa cu delay-uri în stagger. Ai un reveal de nivel Linear.
Lecția 4, Tranziții Tailwind care nu arată a Tailwind
📜 Prompt Playbook,
Cel mai bun AI. • De ce.
<button class="
transition-all duration-300 ease-snap
hover:-translate-y-0.5
hover:shadow-lg hover:shadow-accent/30
active:scale-[0.98]
rounded-2xl px-6 py-3 bg-accent text-white
">Press me</button>
Trei reguli de reținut pe veci: fă tranziția pe transform și shadow, niciodată pe proprietăți de layout (width, height, padding). Easing snap pentru intrări. O micșorare minusculă la active, pentru senzația tactilă.
Lecția 5, Animații conduse de scroll (acum CSS le face nativ)
În 2024 browserele au livrat animațiile CSS conduse de scroll. Acum poți derula o animație CSS de-a lungul barei de scroll cu zero JavaScript.
📜 Prompt Playbook,
Cel mai bun AI. • De ce.
.progress {
position: fixed;
top: 0; left: 0;
width: 100%;
height: 4px;
background: linear-gradient(90deg, #8b5cf6, #06b6d4);
transform-origin: left;
animation: progress linear;
animation-timeline: scroll(root);
}
@keyframes progress { from { transform: scaleX(0); } to { transform: scaleX(1); } }
E o singură regulă. Zero librării. Merge în Chrome și Edge. În rest, degradează elegant.
Lecția 6, Reduced motion, linia de accesibilitate pe care trebuie s-o ții
Unii utilizatori se simt rău din cauza animației. Respectă mereu prefers-reduced-motion.
📜 Prompt Playbook,
Cel mai bun AI. • De ce.
@media (prefers-reduced-motion: reduce) {
*, *::before, *::after {
animation-duration: 0.01ms !important;
animation-iteration-count: 1 !important;
transition-duration: 0.01ms !important;
scroll-behavior: auto !important;
}
}
🎯 Pachet de quest-uri Nivel 1
✨ Construiește o landing page doar din CSS, cu 5 momente de mișcare
Obiectiv. Dovedește că CSS poate duce un site întreg.
Pași
Creează un site pe o singură pagină cu hero, grilă de features (3 carduri), testimonial, pricing, footer. Adaugă cel puțin 5 momente distincte de mișcare folosind doar CSS: fade-up la încărcare, hover lift pe carduri, underline animat pe linkuri, bară de progres condusă de scroll, micro-interacțiune pe buton. Folosește easing-ul snap peste tot. Testează prefers-reduced-motion. Fă deploy pe Vercel.
Gata când…
☐ URL live ☐ 5 momente CSS distincte de mișcare, documentate ☐ Reduced-motion respectat
📜 Construiește o componentă de titlu cu stagger-reveal
Obiectiv. Fă o componentă React reutilizabilă care aplică stagger pe orice titlu, literă cu literă sau cuvânt cu cuvânt.
Pași
Construiește <RevealText text='...' by='word' delay={50} />. Fiecare cuvânt e învelit într-un <span> cu o animație CSS și un delay dintr-o custom property. Testeaz-o cu 3 titluri diferite în sandbox-ul tău. Adaugă o poveste Storybook sau o rută demo în sandbox.
Gata când…
☐ Componentă reutilizabilă în mai multe pagini ☐ Rută demo în sandbox
💼 Vinde un 'refresh de animație CSS' unui business local real
Obiectiv. Site-urile statice existente au nevoie de asta. Ia bani pe upgrade.
Pași
Găsește un business local cu un website obosit (studio de yoga, avocat, restaurant). Oferă un pachet de 'motion polish': 8 până la 12 momente de mișcare adăugate, accesibilitate îmbunătățită, fără redesign. Cere între 400 și 1.200 USD pentru livrare într-o săptămână. Livrează, măsoară Lighthouse înainte vs după. Publică un studiu de caz de o pagină în portofoliul tău.
Gata când…
☐ 1 client plătitor ☐ Capturi Lighthouse înainte/după ☐ Studiu de caz live
🏅 Nivel 1 completat, badge-ul CSS Whisperer deblocat
Acum poți face 70% din orice job de animație cu zero librării. Urmează artileria grea. Nivel 2, Librării de animație JS.