Природні easings, скромні durations, осмислений stagger. Завжди шанує prefers-reduced-motion.
Hover the row → bar runs across with the named easing.
cubic-bezier(0.16, 1, 0.3, 1) · default · 90% case
cubic-bezier(0.65, 0, 0.35, 1) · symmetric · page transitions
cubic-bezier(0.34, 1.56, 0.64, 1) · slight overshoot · success states only
Тільки для progress bars / loaders
| Token | Час | Кейс |
|---|---|---|
| --dur-instant | 80ms | tooltip show |
| --dur-fast | 140ms | hover, focus, color changes |
| --dur-med | 240ms | modal open, card expand |
| --dur-slow | 360ms | page elements reveal |
| --dur-page | 480ms | route transitions (View Transitions API) |
Перезавантажте сторінку, щоб побачити входження.
/* CSS */ .reveal { animation: fadeUp var(--dur-slow) var(--ease-out) both; } .reveal.d1 { animation-delay: 80ms; } .reveal.d2 { animation-delay: 160ms; } .reveal.d3 { animation-delay: 240ms; } @keyframes fadeUp { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: none; } }
/* respect user preference — tokens become 0ms */
@media (prefers-reduced-motion: reduce) {
:root {
--dur-instant: 0ms;
--dur-fast: 0ms;
--dur-med: 0ms;
--dur-slow: 0ms;
--dur-page: 0ms;
}
}
Усі animations все одно показують end state — лише без переходу. Жодні decorative anims не залежать від ефекту.