CSS动画
CSS动画
CSS może realizować animacje elementów HTML bez użycia JavaScript lub Flash!
W tym rozdziale nauczysz się takich właściwości:
@keyframes
animation-name
animation-duration
animation-delay
animation-iteration-count
animation-direction
animation-timing-function
animation-fill-mode
animation
Wsparcie przeglądarek dla animacji
Liczby w tabeli wskazują na pierwszą wersję przeglądarki, która w pełni obsługuje tę właściwość.
Właściwości | Chrome | IE | Firefox | Safari | Opera |
---|---|---|---|---|---|
@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 jest animacja CSS?
Animacja pozwala na stopniowe zmienianie stylu elementu z jednego na inny.
Możesz dowolnie zmieniać dowolną liczbę atrybutów CSS.
Aby użyć CSS animacji, musisz najpierw określić kilka kluczowych ramek.
Kluczowe ramy zawierają style, które element ma w określonych momentach.
@keyframes zasady
Jeśli w @keyframes
Zasady określają style CSS, które będą stopniowo zmieniać się w określonym czasie z bieżącego stylu na nowy styl.
Aby animacja działała, musi być przypisana do jakiegoś elementu.
Poniższy przykład przypisuje animację "example" do elementu <div>. Animacja potrwa 4 sekundy, podczas której kolor tła elementu <div> będzie stopniowo zmieniał się z czerwonego na żółty:
Przykład
/* Kody animacji */ @keyframes example { from {background-color: red;} do {background-color: yellow;} } /* applying animation effects to this element */ div { width: 100px; height: 100px; background-color: red; animation-name: example; animation-duration: 4s; }
Uwaga:animation-duration
Atrybut definiuje, jak długo trwa animacja. Jeśli nie określono animation-duration
Jeśli nie określisz wartości dla atrybutu, animacja nie zostanie uruchomiona, ponieważ domyślna wartość to 0s (0 sekund).
W powyższym przykładzie, poprzez użycie słów kluczowych "from" i "to" (przedstawiających 0% (rozpoczęcie) i 100% (zakończenie)), ustawiliśmy, kiedy styl ma się zmieniać.
Możesz również używać wartości procentowych. Dzięki użyciu procentów, możesz dodać dowolną liczbę zmian stylu.
Poniższy przykład zmieni kolor tła elementu <div> na żółty, gdy animacja osiągnie 25%, 50% oraz 100%.
Przykład
/* Kody animacji */ @keyframes example { 0% {background-color: red;} 25% {background-color: yellow;} 50% {background-color: blue;} 100% {background-color: green;} } /* Elementy, na które aplikowana jest animacja */ div { width: 100px; height: 100px; background-color: red; animation-name: example; animation-duration: 4s; }
Poniższy przykład zmieni kolor tła i pozycję elementu <div> w 25%, 50% i 100% ukończenia animacji:
Przykład
/* Kody animacji */ @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;} } /* Elementy, na które aplikowana jest animacja */ div { width: 100px; height: 100px; position: relative; background-color: red; animation-name: example; animation-duration: 4s; }
Opóźnienie animacji
animation-delay
Atrybut określa czas opóźnienia zanim animacja rozpocznie się odtwarzanie.
Poniższy przykład ma 2-sekundowy opóźnienie 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ą wartości ujemne. Jeśli używa się wartości ujemnych, animacja rozpocznie się, jakby była już odtwarzana przez N sekund.
W poniższym przykładzie, animacja rozpocznie się, jakby już 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; }
Ustawienie liczby razy, przez które animacja powinna być uruchomiona
animation-iteration-count
Atrybut określa, ile razy animacja powinna być uruchomiona.
Poniższy przykład uruchamia animację 3 razy przed zatrzymaniem:
Przykład
div { width: 100px; height: 100px; position: relative; background-color: red; animation-name: example; animation-duration: 4s; animation-iteration-count: 3; }
Poniższy przykład używa 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; }
Odtwarzanie animacji w przeciwnym kierunku lub w sposób cykliczny
animation-direction
Atrybut określa, czy animacja ma być odtwarzana do przodu, do tyłu czy w sposób cykliczny.
animation-direction
Atrybut może przyjąć następujące wartości:
normal
- Animacja odtwarzana normalnie (do przodu). Domyślna wartośćreverse
- Animacja odtwarzana w przeciwnym kierunku (do tyłu)alternate
- Animacja najpierw odtwarzana do przodu, a następnie do tyłualternate-reverse
- Animacja najpierw odtwarzana do tyłu, a następnie do przodu
Poniższy przykład pokaże animację运行的相反方向(向后):
Przykład
div { width: 100px; height: 100px; position: relative; background-color: red; animation-name: example; animation-duration: 4s; animation-direction: reverse; }
Poniższy przykład używa wartości "alternate", aby animacja najpierw chạyła 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; }
Poniższy przykład używa wartości "alternate-reverse", aby animacja najpierw chạyła wstecz, 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śla krzywą prędkości animacji
animation-timing-function
Atrybut określa krzywą prędkości animacji.
animation-timing-function
Atrybut może przyjąć następujące wartości:
ease
- Określ animację, która zaczyna się wolno, potem przyspiesza, a potem znów zwalnia (domyślna)linear
- Określ animację, w której prędkość zaczyna się i kończy jest taka samaease-in
- Określ animację, która zaczyna się wolniejease-out
- Określ animację, która kończy się wolniejease-in-out
- Określ animację, która zaczyna się i kończy wolniejcubic-bezier(n,n,n,n)
- Uruchom swoje wartości zdefiniowane w trójstopniowej funkcji Béziera
Poniższe przykłady pokazują różne krzywe prędkości, które 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śla tryb wypełniania animacji
CSS animacje nie wpłyną na element przed odtworzeniem pierwszej kluczowej klatki ani po odtworzeniu ostatniej kluczowej klatki.animation-fill-mode
atrybut może nadpisać to zachowanie.
W czasie, gdy animacja nie jest odtwarzana (przed rozpoczęciem, po zakończeniu, lub po obu końcach),animation-fill-mode
Atrybut określa styl elementu docelowego.
Atrybut animation-fill-mode może przyjąć następujące wartości:
none
- Domyślna wartość. Animacja nie będzie aplikować żadnych stylów na element przed lub po jej wykonaniu.forwards
- Element zachowa wartości stylu ustawione w ostatniej kluczowej klatce (zależne od animation-direction i animation-iteration-count).backwards
- Element uzyska wartości stylu ustawione w pierwszej kluczowej klatce (zależne od animation-direction) i zachowa tę wartość w czasie opóźnienia animacji.both
- Animacja będzie jednocześnie przestrzegać zasad wstecznego i przyszłego, rozszerzając właściwości animacji w obu kierunkach.
Poniższy przykład pokazuje, jak element <div> zachowuje wartości stylu z ostatniego kluczowego klatki 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 ustawia wartości z pierwszego kluczowego kadrów dla elementu <div> 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 ustawia wartości stylu z pierwszego kluczowego kadrów dla elementu <div> przed rozpoczęciem animacji oraz zachowuje wartości ostatniego kluczowego kadrów 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; }
Skrócone atrybuty animacji
Poniższy przykład używa sześciu atrybutów animacji:
Przykład
div { animation-name: example; animation-duration: 5s; animation-timing-function: linear; animation-delay: 2s; animation-iteration-count: infinite; animation-direction: alternate; }
Użycie skróconej wersji animation
Atrybuty mogą również osiągnąć ten sam efekt animacji jak w poprzednim przykładzie:
Przykład
div { animation: example 5s linear 2s infinite alternate; }
Atrybuty CSS animacji
Poniższa tabela pokazuje reguły @keyframes oraz wszystkie atrybuty CSS animacji:
Właściwości | Opis |
---|---|
@keyframes | Zdefiniowanie trybu animacji. |
animation | Ustawienie skróconej wersji wszystkich właściwości animacji. |
animation-delay | Zdefiniowanie opóźnienia startu animacji. |
animation-direction | Zdefiniowanie, czy animacja ma być odtwarzana do przodu, do tyłu czy w obie strony. |
animation-duration | Zdefiniowanie czasu potrzebnego na zakończenie jednego cyklu animacji. |
animation-fill-mode | Zdefiniowanie stylu elementu, gdy animacja nie jest odtwarzana (przed startem, po zakończeniu lub oba jednocześnie). |
animation-iteration-count | Zdefiniowanie liczby razy, na które animacja ma być odtwarzana. |
animation-name | Zdefiniowanie nazwy animacji @keyframes. |
animation-play-state | Określa, czy animacja jest uruchamiana czy zatrzymywana. |
animation-timing-function | 规定动画的速度曲线。 |