17.2. Właściwości animation-name
i animation-duration
animation-name
i animation-duration
animation-name
: Powiązanie z @keyframes
Właściwość animation-name
jest **niezbędna** do zastosowania zdefiniowanej animacji @keyframes
do elementu. Jej wartością jest nazwa (lub nazwy oddzielone przecinkami) reguły @keyframes
, którą chcemy uruchomić na tym elemencie.
Bez podania animation-name
, przeglądarka nie wie, którą sekwencję klatek kluczowych ma odtworzyć, więc żadna animacja się nie odbędzie.
Składnia:
animation-name: none | <nazwa-keyframes> [, <nazwa-keyframes>]*;
none
(wartość domyślna): Brak animacji.<nazwa-keyframes>
: Nazwa zdefiniowana w regule@keyframes nazwa-keyframes { ... }
. Nazwa jest wrażliwa na wielkość liter.- Lista nazw: Można przypisać wiele animacji do jednego elementu, podając ich nazwy oddzielone przecinkami. Każda animacja będzie działać zgodnie ze swoimi parametrami (czasem trwania, funkcją czasową itd.).
Przykład:
/* Definicje animacji */
@keyframes pulsowanie {
50% { opacity: 0.5; }
}
@keyframes przesuwanie {
to { transform: translateX(100px); }
}
/* Zastosowanie animacji */
.element1 {
/* Użyj animacji o nazwie 'pulsowanie' */
animation-name: pulsowanie;
animation-duration: 1s;
}
.element2 {
/* Użyj obu animacji jednocześnie */
animation-name: pulsowanie, przesuwanie;
/* Czasy trwania dla obu animacji (kolejność odpowiada nazwom) */
animation-duration: 1s, 2s;
}
animation-duration
: Czas trwania animacji
Właściwość animation-duration
określa **czas potrzebny na ukończenie jednego cyklu animacji**. Podobnie jak transition-duration
, jest to kluczowy parametr - bez niego (lub z wartością 0s
) animacja nie będzie widoczna.
Składnia:
animation-duration: <czas> [, <czas>]*;
<czas>
: Wartość czasu, **nieujemna**. Używane jednostki to sekundy (s
) i milisekundy (ms
).
Wartość domyślna: 0s
(brak animacji).
Przykład:
@keyframes powiekszanie {
to { transform: scale(1.5); }
}
.element1 {
animation-name: powiekszanie;
/* Jeden cykl animacji potrwa 3 sekundy */
animation-duration: 3s;
}
.element2 {
animation-name: pulsowanie, przesuwanie; /* Z poprzedniego przykładu */
/* 'pulsowanie' trwa 500ms, 'przesuwanie' trwa 1.5s */
animation-duration: 500ms, 1.5s;
}
Jeśli lista czasów trwania jest krótsza niż lista nazw animacji w animation-name
, wartości czasów są powtarzane cyklicznie.
Współpraca animation-name
i animation-duration
Te dwie właściwości są fundamentalne i muszą być zdefiniowane (z wartościami innymi niż domyślne), aby jakakolwiek animacja CSS mogła się odbyć. animation-name
mówi *co* animować, a animation-duration
mówi *jak długo* ma trwać jeden cykl tej animacji.
W kolejnych lekcjach poznamy inne właściwości z rodziny animation-*
, które pozwalają dalej dostosowywać zachowanie animacji (np. funkcję czasową, opóźnienie, liczbę powtórzeń).
FAQ - Najczęściej zadawane pytania
Co jeśli podam nazwę animacji, która nie istnieje w @keyframes
?
Jeśli wartość animation-name
nie odpowiada żadnej zdefiniowanej regule @keyframes
, przeglądarka po prostu zignoruje tę animację. Element nie będzie animowany zgodnie z tą nazwą.
Czy muszę podawać jednostkę czasu w animation-duration
?
Tak, podanie jednostki (s
lub ms
) jest wymagane. Sama liczba bez jednostki jest nieprawidłową wartością i zostanie zignorowana (co zwykle skutkuje domyślnym 0s
).
Czy animation-duration: 0s;
ma jakiś sens?
Ustawienie animation-duration
na 0s
skutecznie wyłącza animację, ponieważ jej cykl trwa zerowy czas. Jest to równoważne z brakiem definicji animacji lub użyciem animation-name: none;
.
Jak dopasować czasy trwania do nazw przy wielu animacjach?
Kolejność wartości w animation-duration
odpowiada kolejności nazw w animation-name
. Pierwszy czas dotyczy pierwszej nazwy, drugi czas drugiej nazwy itd. Jeśli lista czasów jest krótsza, jest powtarzana.
animation-name: anim1, anim2, anim3;
animation-duration: 1s, 2s; /* anim1: 1s, anim2: 2s, anim3: 1s */