Przejście sprawnie animuje właściwość od jej starej wartości do nowej w określonym czasie, zamiast zmieniać ją natychmiast. Deklarujesz co animować i jak długo, a następnie wyzwalasz zmianę, modyfikując właściwość (często za pomocą :hover lub klasy).
.button {
background: blue;
transition: background 0.3s ease; /* animate background over 300ms */
}
.button:hover {
background: darkblue; /* on hover, it fades smoothly instead of snapping */
}
Dlaczego to ważne
Cztery części skrótu
transition: background 0.3s ease 0s;
/* │ │ │ └── delay before starting */
/* │ │ └─────── timing function (the easing curve) */
/* │ └──────────── duration */
/* └─────────────────────── property to animate (or `all`) */
Animowanie wielu właściwości
.card {
transition: transform 0.3s ease, box-shadow 0.3s ease;
}
.card:hover {
transform: translateY(-4px); /* lifts up */
box-shadow: 0 8px 20px rgba(0,0,0,0.2); /* + deeper shadow */
}
Wymień każdą właściwość (oddzieloną przecinkami) zamiast używać all, co może przypadkowo animować rzeczy, które nie miały być animowane i pogorszyć wydajność.
Funkcje czasowe
transition-timing-function: ease; /* slow-fast-slow (default) */
/* linear | ease-in | ease-out | ease-in-out */
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); /* custom curve */
Wydajność: animowanie transform/opacity
/* ✅ cheap — GPU-composited, no layout recalculation */
transition: transform 0.3s, opacity 0.3s;
/* ❌ expensive — animating width/top/left triggers layout on every frame */
transition: width 0.3s, left 0.3s;
Preferuj animowanie transform i opacity; są obsługiwane przez komposytor bez ponownego uruchamiania layoutu, dzięki czemu pozostają płynne (60fps).
Dostępność
@media (prefers-reduced-motion: reduce) {
* { transition: none; } /* respect users who get motion sickness */
}
Dlaczego to ważne
Przejścia dodają połysku, który sprawia, że interfejs użytkownika wydaje się responsywny i żywy (efekty hover, płynne zmiany stanu) zaledwie jedną linią.
Wiedzenie, aby animować transform/opacity dla wydajności — i respektować prefers-reduced-motion — to to, co oddziela płynny, dostępny ruch od potrząsanej animacji.
