Przejścia i animacje CSS
transition, transform, @keyframes — ożywiamy stronę
transition — płynna zmiana stylu
transition ustawia się na elemencie i uruchamia przy każdej zmianie właściwości CSS (zwykle przez :hover).
.btn {
background: #6070f7;
transform: scale(1);
/* transition: właściwość czas funkcja-czasowania opóźnienie */
transition: background 0.2s ease, transform 0.2s ease;
/* Lub dla wszystkich właściwości */
transition: all 0.2s ease;
}
.btn:hover {
background: #4f5fea;
transform: scale(1.05); /* lekkie powiększenie */
}Funkcje czasowania:
ease— wolno → szybko → wolno (naturalne)linear— stała prędkośćease-in— zaczyna wolnoease-out— kończy wolno (świetne dla pojawiających się elementów)
transform — transformacja elementu
transform nie przesuwa elementu w przepływie dokumentu — to czysto wizualna zmiana. Przeglądarka może animować ją przez GPU.
.element {
/* Przesunięcie */
transform: translateX(20px); /* w prawo */
transform: translateY(-10px); /* w górę */
transform: translate(20px, -10px); /* oba */
/* Skalowanie */
transform: scale(1.1); /* +10% */
transform: scaleX(2); /* podwójna szerokość */
/* Obrót */
transform: rotate(45deg);
transform: rotate(-90deg);
/* Pochylenie */
transform: skewX(15deg);
/* Kombinacja */
transform: translateY(-4px) scale(1.02);
}@keyframes — pełne animacje
Dla bardziej złożonych animacji, które się powtarzają lub mają wiele etapów:
/* Definiuj animację */
@keyframes spin {
from { transform: rotate(0deg); }
to { transform: rotate(360deg); }
}
@keyframes fadeIn {
0% { opacity: 0; transform: translateY(20px); }
100% { opacity: 1; transform: translateY(0); }
}
/* Zastosuj ją */
.spinner {
animation: spin 1s linear infinite;
}
.card {
animation: fadeIn 0.4s ease-out forwards;
/* forwards — pozostaje w końcowym stanie */
}Dokładnie ten kod jest używany w Memory Game! perspective ustawia odległość obserwatora dla efektu 3D, backface-visibility: hidden ukrywa tył gdy jest zwrócony od nas.
Animuj tylko transform i opacity — te właściwości są obsługiwane przez GPU bez przeliczania układu. Animowanie width, height, top, left jest wolne i powoduje szarpanie.