17.9. Właściwość skrócona animation
Do czego służy skrót animation
?
Właściwość skrócona animation
pozwala na zwięzłe zdefiniowanie wszystkich lub wybranych indywidualnych właściwości animacji (animation-*
) w jednej deklaracji. Upraszcza to kod CSS i czyni go bardziej czytelnym, zwłaszcza gdy stosujemy wiele parametrów do jednej animacji.
Składnia
Składnia skrótu animation
pozwala na podanie wartości dla poszczególnych właściwości w określonej kolejności. Wiele wartości można pominąć, a przeglądarka użyje ich wartości domyślnych.
/* Składnia dla pojedynczej animacji */
animation: [animation-duration] || [animation-timing-function] || [animation-delay] || [animation-iteration-count] || [animation-direction] || [animation-fill-mode] || [animation-play-state] || [animation-name];
/* Składnia dla wielu animacji (oddzielone przecinkami) */
animation: <pojedyncza-animacja> [, <pojedyncza-animacja>]*;
Kluczowe zasady:
- Kolejność: Chociaż specyfikacja pozwala na pewną elastyczność, zaleca się trzymanie ustalonej kolejności dla czytelności. Najważniejsze jest, aby wartości czasu (dla
duration
idelay
) były rozróżnialne. - Wartości czasu: Jeśli podano **dwie** wartości czasu, pierwsza jest interpretowana jako
animation-duration
, a druga jakoanimation-delay
. Jeśli podano **jedną** wartość czasu, jest ona interpretowana jakoanimation-duration
, aanimation-delay
przyjmuje wartość domyślną0s
. animation-name
: Nazwa animacji (z@keyframes
) jest zazwyczaj podawana jako ostatnia lub pierwsza dla lepszej czytelności.- Wartości domyślne: Jeśli jakaś wartość zostanie pominięta, przyjmuje swoją wartość domyślną (np.
duration: 0s
,timing-function: ease
,delay: 0s
,iteration-count: 1
,direction: normal
,fill-mode: none
,play-state: running
,name: none
). - Wymagane wartości: Aby animacja była widoczna, przynajmniej
animation-duration
musi być ustawione na wartość większą niż0s
, aanimation-name
musi wskazywać na istniejącą regułę@keyframes
.
Przykłady:
@keyframes pulsowanie {
50% { transform: scale(1.1); }
}
@keyframes przesuwanie {
to { left: 100px; }
}
/* Przykład 1: Podstawowa animacja */
.element1 {
/* duration: 2s, name: pulsowanie (reszta domyślna) */
animation: 2s pulsowanie;
}
/* Przykład 2: Animacja z opóźnieniem i powtórzeniami */
.element2 {
/* duration: 1s, delay: 0.5s, iteration-count: infinite, name: pulsowanie */
animation: 1s 0.5s infinite pulsowanie;
}
/* Przykład 3: Animacja z funkcją czasową i kierunkiem */
.element3 {
/* duration: 3s, timing-function: ease-in-out, direction: alternate, name: pulsowanie */
animation: 3s ease-in-out alternate pulsowanie;
}
/* Przykład 4: Dwie animacje jednocześnie */
.element4 {
position: relative;
/* Animacja 1: pulsowanie, 1s, nieskończone, naprzemiennie */
/* Animacja 2: przesuwanie, 2s, liniowo, 3 razy, z opóźnieniem 0.2s */
animation:
1s infinite alternate pulsowanie,
2s linear 0.2s 3 przesuwanie;
}
/* Przykład 5: Pełna definicja (rzadko potrzebna) */
.element5 {
animation: 3s ease-in 1s 2 reverse both paused nazwaAnimacji;
/* duration | timing-function | delay | iteration-count | direction | fill-mode | play-state | name */
}
Zalety używania skrótu
- Zwięzłość: Znacząco redukuje ilość kodu CSS potrzebnego do zdefiniowania animacji.
- Czytelność: Gdy używany konsekwentnie, może ułatwić szybkie zrozumienie parametrów animacji.
- Standard branżowy: Jest powszechnie stosowany w projektach i frameworkach CSS.
Wadą może być konieczność pamiętania o kolejności wartości, zwłaszcza czasów trwania i opóźnienia, oraz potencjalne trudności w debugowaniu, jeśli któraś wartość jest nieprawidłowa.
FAQ - Najczęściej zadawane pytania
Czy muszę podawać wszystkie wartości w skrócie animation
?
Nie, wystarczy podać te wartości, które chcesz zmienić względem domyślnych. Najczęściej podaje się przynajmniej animation-duration
i animation-name
. Reszta przyjmie wartości domyślne.
Co jeśli pomylę kolejność wartości czasu (duration i delay)?
Jeśli podasz dwie wartości czasu, pierwsza zawsze będzie traktowana jako animation-duration
, a druga jako animation-delay
. Jeśli chcesz ustawić tylko delay
, a duration
ma być domyślne (0s
), musisz jawnie podać 0s
dla duration: animation: 0s 1s mojaAnimacja;
(chociaż taka animacja nie będzie widoczna).
Czy mogę użyć skrótu animation
do zresetowania wszystkich właściwości animacji?
Tak, ustawienie animation: none;
usunie wszystkie aktywne animacje z elementu i zresetuje wszystkie właściwości animation-*
do ich wartości początkowych.
Jak podać wiele animacji w skrócie?
Definicje poszczególnych animacji oddziela się przecinkami. Każda definicja po przecinku może zawierać własny zestaw parametrów. Na przykład: animation: 1s anim1, 2s 0.5s infinite anim2;
.