Animacje CSS
Animacje CSS
CSS umożliwia animację elementów HTML bez użycia JavaScript lub Flash!
W tym rozdziale poznasz następujące właściwości:
@keyframes
animation-name
animation-duration
animation-delay
animation-iteration-count
animation-direction
animation-timing-function
animation-fill-mode
animation
Obsługa przeglądarek dla animacji
Liczby w tabeli określają pierwszą wersję przeglądarki, która w pełni obsługuje tę właściwość.
Property | |||||
---|---|---|---|---|---|
@keyframes | 43.0 | 10.0 | 16.0 | 9.0 | 30.0 |
animation-name | 43.0 | 10.0 | 16.0 | 9.0 | 30.0 |
animation-duration | 43.0 | 10.0 | 16.0 | 9.0 | 30.0 |
animation-delay | 43.0 | 10.0 | 16.0 | 9.0 | 30.0 |
animation-iteration-count | 43.0 | 10.0 | 16.0 | 9.0 | 30.0 |
animation-direction | 43.0 | 10.0 | 16.0 | 9.0 | 30.0 |
animation-timing-function | 43.0 | 10.0 | 16.0 | 9.0 | 30.0 |
animation-fill-mode | 43.0 | 10.0 | 16.0 | 9.0 | 30.0 |
animation | 43.0 | 10.0 | 16.0 | 9.0 | 30.0 |
Co to są animacje CSS?
Animacja pozwala elementowi stopniowo zmieniać się z jednego stylu na inny.
Możesz zmienić tyle właściwości CSS, ile chcesz, tyle razy, ile chcesz.
Aby użyć animacji CSS, musisz najpierw określić kilka klatek kluczowych animacji.
Klatki kluczowe zawierają style, które element będzie miał w określonych momentach.
Zasada @keyframes
Gdy określisz style CSS wewnątrz @keyframes
reguły, animacja będzie stopniowo zmieniać się z bieżącego stylu na nowy w określonych momentach.
Aby animacja działała, musisz powiązać animację z elementem.
Poniższy przykład wiąże animację „przykład” z elementem <div>. Animacja potrwa 4 sekundy i stopniowo zmieni kolor tła elementu <div> z „czerwonego” na „żółty”:
Przykład
/* The animation code */
@keyframes example {
from {background-color: red;}
to {background-color: yellow;}
}
/* The element to apply the animation to */
div {
width: 100px;
height: 100px;
background-color: red;
animation-name: example;
animation-duration: 4s;
}
Uwaga: Właściwość animation-duration
określa, jak długo animacja powinna być ukończona. Jeśli animation-duration
właściwość nie zostanie określona, animacja nie zostanie wykonana, ponieważ wartość domyślna to 0s (0 sekund).
W powyższym przykładzie określiliśmy, kiedy styl się zmieni, używając słów kluczowych „od” i „do” (co oznacza 0% (początek) i 100% (zakończenie)).
Możliwe jest również użycie procentu. Używając wartości procentowych, możesz dodać tyle zmian stylu, ile chcesz.
Poniższy przykład zmieni kolor tła elementu <div>, gdy animacja jest ukończona w 25%, w 50% i ponownie, gdy animacja jest ukończona w 100%:
Przykład
/* The animation code */
@keyframes example
{
0% {background-color: red;}
25% {background-color: yellow;}
50% {background-color: blue;}
100% {background-color: green;}
}
/* The element to apply the animation to */
div {
width: 100px;
height: 100px;
background-color: red;
animation-name: example;
animation-duration: 4s;
}
Poniższy przykład zmieni zarówno kolor tła, jak i położenie elementu <div>, gdy animacja jest ukończona w 25%, w 50% i ponownie, gdy animacja jest ukończona w 100%:
Przykład
/* The animation code */
@keyframes example
{
0% {background-color:red; left:0px; top:0px;}
25% {background-color:yellow; left:200px; top:0px;}
50% {background-color:blue; left:200px; top:200px;}
75% {background-color:green; left:0px; top:200px;}
100% {background-color:red; left:0px; top:0px;}
}
/* The element to apply the animation to */
div {
width: 100px;
height: 100px;
position: relative;
background-color: red;
animation-name: example;
animation-duration: 4s;
}
Opóźnij animację
Właściwość animation-delay
określa opóźnienie rozpoczęcia animacji.
Poniższy przykład ma 2 sekundy opóźnienia przed rozpoczęciem animacji:
Przykład
div {
width: 100px;
height: 100px;
position: relative;
background-color: red;
animation-name: example;
animation-duration: 4s;
animation-delay: 2s;
}
Dopuszczalne są również wartości ujemne. Jeśli użyjesz wartości ujemnych, animacja rozpocznie się tak, jakby była odtwarzana przez N sekund.
W poniższym przykładzie animacja rozpocznie się tak, jakby była odtwarzana przez 2 sekundy:
Przykład
div {
width: 100px;
height: 100px;
position: relative;
background-color: red;
animation-name: example;
animation-duration: 4s;
animation-delay: -2s;
}
Ustaw, ile razy animacja powinna być uruchamiana
Właściwość animation-iteration-count
określa, ile razy animacja powinna zostać uruchomiona.
Poniższy przykład uruchomi animację 3 razy, zanim się zatrzyma:
Przykład
div {
width: 100px;
height: 100px;
position: relative;
background-color: red;
animation-name: example;
animation-duration: 4s;
animation-iteration-count: 3;
}
W poniższym przykładzie użyto wartości „infinite”, aby animacja trwała wiecznie:
Przykład
div {
width: 100px;
height: 100px;
position: relative;
background-color: red;
animation-name: example;
animation-duration: 4s;
animation-iteration-count:
infinite;
}
Uruchom animację w odwrotnym kierunku lub w cyklach alternatywnych
Właściwość animation-direction
określa, czy animacja ma być odtwarzana w przód, wstecz czy w naprzemiennych cyklach.
Właściwość kierunek animacji może mieć następujące wartości:
normal
- Animacja jest odtwarzana normalnie (do przodu). To jest domyślnereverse
- Animacja jest odtwarzana w odwrotnym kierunku (do tyłu)alternate
- Animacja jest odtwarzana najpierw do przodu, potem do tyłualternate-reverse
- Animacja jest odtwarzana najpierw do tyłu, potem do przodu
Poniższy przykład uruchomi animację w odwrotnym kierunku (do tyłu):
Przykład
div {
width: 100px;
height: 100px;
position: relative;
background-color: red;
animation-name: example;
animation-duration: 4s;
animation-direction:
reverse;
}
W poniższym przykładzie użyto wartości „alternate”, aby animacja była uruchamiana najpierw do przodu, a następnie do tyłu:
Przykład
div {
width: 100px;
height: 100px;
position: relative;
background-color: red;
animation-name: example;
animation-duration: 4s;
animation-iteration-count: 2;
animation-direction:
alternate;
}
W poniższym przykładzie użyto wartości „alternate-reverse”, aby animacja była uruchamiana najpierw do tyłu, a następnie do przodu:
Przykład
div {
width: 100px;
height: 100px;
position: relative;
background-color: red;
animation-name: example;
animation-duration: 4s;
animation-iteration-count: 2;
animation-direction:
alternate-reverse;
}
Określ krzywą prędkości animacji
Właściwość animation-timing-function
określa krzywą prędkości animacji.
Właściwość animacja-timing-function może mieć następujące wartości:
ease
- Określa animację z powolnym startem, potem szybkim i powolnym zakończeniem (jest to ustawienie domyślne)linear
- Określa animację z tą samą prędkością od początku do końcaease-in
- Określa animację z powolnym startemease-out
- Określa animację z wolnym końcemease-in-out
- Określa animację z powolnym początkiem i końcemcubic-bezier(n,n,n,n)
- Pozwala zdefiniować własne wartości w funkcji sześciennej-Beziera
Poniższy przykład pokazuje niektóre z różnych krzywych prędkości, których można użyć:
Przykład
#div1 {animation-timing-function: linear;}
#div2
{animation-timing-function: ease;}
#div3 {animation-timing-function:
ease-in;}
#div4 {animation-timing-function: ease-out;}
#div5
{animation-timing-function: ease-in-out;}
Określ tryb wypełniania dla animacji
Animacje CSS nie wpływają na element przed odtworzeniem pierwszej klatki kluczowej lub po odtworzeniu ostatniej klatki kluczowej. Właściwość animacja-fill-mode może zastąpić to zachowanie.
Właściwość animation-fill-mode
określa styl elementu docelowego, gdy animacja nie jest odtwarzana (przed rozpoczęciem, po zakończeniu lub w obu przypadkach).
Właściwość animation-fill-mode może mieć następujące wartości:
none
- Domyślna wartość. Animacja nie zastosuje żadnych stylów do elementu przed ani po jego wykonaniuforwards
- Element zachowa wartości stylu ustawione przez ostatnią klatkę kluczową (w zależności od kierunku animacji i licznika iteracji animacji)backwards
- Element otrzyma wartości stylu ustawione przez pierwszą klatkę kluczową (w zależności od kierunku animacji) i zachowa je podczas okresu opóźnienia animacjiboth
- Animacja będzie zgodna z zasadami zarówno do przodu, jak i do tyłu, rozszerzając właściwości animacji w obu kierunkach
Poniższy przykład pozwala elementowi <div> zachować wartości stylu z ostatniej klatki kluczowej po zakończeniu animacji:
Przykład
div {
width: 100px;
height: 100px;
background: red;
position: relative;
animation-name: example;
animation-duration: 3s;
animation-fill-mode: forwards;
}
Poniższy przykład pozwala elementowi <div> uzyskać wartości stylu ustawione przez pierwszą klatkę kluczową przed rozpoczęciem animacji (w okresie opóźnienia animacji):
Przykład
div {
width: 100px;
height: 100px;
background: red;
position: relative;
animation-name: example;
animation-duration: 3s;
animation-delay: 2s;
animation-fill-mode: backwards;
}
Poniższy przykład pozwala elementowi <div> uzyskać wartości stylu ustawione przez pierwszą klatkę kluczową przed rozpoczęciem animacji i zachować wartości stylu z ostatniej klatki kluczowej po zakończeniu animacji:
Przykład
div {
width: 100px;
height: 100px;
background: red;
position: relative;
animation-name: example;
animation-duration: 3s;
animation-delay: 2s;
animation-fill-mode: both;
}
Właściwość skrócona animacji
Poniższy przykład wykorzystuje sześć właściwości animacji:
Przykład
div
{
animation-name: example;
animation-duration: 5s;
animation-timing-function: linear;
animation-delay: 2s;
animation-iteration-count: infinite;
animation-direction: alternate;
}
Ten sam efekt animacji, jak powyżej, można uzyskać za pomocą
animation
właściwości skróconej:
Przykład
div
{
animation: example 5s linear 2s infinite alternate;
}
Właściwości animacji CSS
W poniższej tabeli wymieniono regułę @keyframes i wszystkie właściwości animacji CSS:
Property | Description |
---|---|
@keyframes | Specifies the animation code |
animation | A shorthand property for setting all the animation properties |
animation-delay | Specifies a delay for the start of an animation |
animation-direction | Specifies whether an animation should be played forwards, backwards or in alternate cycles |
animation-duration | Specifies how long time an animation should take to complete one cycle |
animation-fill-mode | Specifies a style for the element when the animation is not playing (before it starts, after it ends, or both) |
animation-iteration-count | Specifies the number of times an animation should be played |
animation-name | Specifies the name of the @keyframes animation |
animation-play-state | Specifies whether the animation is running or paused |
animation-timing-function | Specifies the speed curve of the animation |