Animacje CSS i microinteractions — UX bez JS
CSS transitions, animations, scroll-driven animations. Co można zrobić w samym CSS-ie i kiedy naprawdę potrzeba GSAP-a lub Framer Motion.
Microinteractions — małe, ledwo zauważalne animacje przy interakcji — często odróżniają stronę „ładną" od strony, która naprawdę dobrze się używa. W 90% przypadków wystarczy CSS.
Trzy poziomy animacji CSS
- Transitions — płynna zmiana z jednego stanu w drugi (hover, focus)
- Animations + @keyframes — bardziej złożone sekwencje (loaders, attention)
- Scroll-driven animations — nowość 2024-2026, reagujące na scroll bez JS
Transition — podstawa
.button {
background: #dc2626;
transition: background 200ms ease, transform 150ms ease;
}
.button:hover {
background: #b91c1c;
transform: translateY(-2px);
}
Reguła: nigdy nie animuj all. Listy konkretnych properties są szybsze i bezpieczniejsze.
Co animować, a czego unikać
GPU-accelerated (szybkie):
transform— translate, scale, rotateopacityfilter— blur, brightness
CPU-bound (wolne, paint-heavy):
width,height,top,left— używajtransform: translatezamiast tegobox-shadow— jeśli musisz, użyjfilter: drop-shadowbackground— kolory ok, gradients wolne
Microinteractions które warto mieć
- Button hover — drobne podniesienie + zmiana cienia
- Focus ring — wyraźny, ale nie agresywny (dostępność!)
- Form validation — czerwona ramka pojawia się płynnie, nie skokowo
- Card hover — obraz lekko się powiększa (scale 1.05), tekst „pull up" w 300ms
- Loader — spinner lub skeleton zamiast pustego ekranu
- Page transition — w SPA delikatne fade-in nowej zawartości
Scroll-driven animations (CSS-only)
Nowość natywna w Chrome/Edge (Firefox za chwilę). Animacja sterowana scrollem bez Intersection Observer:
@keyframes fade-in {
from { opacity: 0; transform: translateY(20px); }
to { opacity: 1; transform: translateY(0); }
}
.card {
animation: fade-in linear;
animation-timeline: view();
animation-range: entry 0% entry 50%;
}
Kiedy potrzebujesz JS biblioteki
- Złożone sekwencje z timeline (GSAP, Framer Motion)
- Animacje sterowane stanem aplikacji (React/Vue + Framer Motion)
- Drag & drop z fizyką
- Animacje SVG (motion path, morphing)
Dostępność — pamiętaj o prefers-reduced-motion
@media (prefers-reduced-motion: reduce) {
*, *::before, *::after {
animation-duration: 0.01ms !important;
transition-duration: 0.01ms !important;
}
}
Bez tego animacje mogą powodować realne problemy zdrowotne u osób z zaburzeniami przedsionkowymi.
Masz pytania?
Pomożemy wdrożyć rozwiązania z tego artykułu na Twojej stronie. Bezpłatna konsultacja.
Skontaktuj się z nami