CSS animaties
- Vorige pagina CSS overgangen
- Volgende pagina CSS tooltip
CSS animaties
CSS kan HTML-elementen aan animaties onderwerpen zonder JavaScript of Flash te gebruiken!
In dit hoofdstuk zult u leren over de volgende eigenschappen:
@keyframes
animation-name
animation-duration
animation-delay
animation-iteration-count
animation-direction
animation-timing-function
animation-fill-mode
animation
Browserondersteuning voor animaties
De cijfers in de tabel vermelden de eerste browserversie die de eigenschap volledig ondersteunt.
属性 | 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 |
Wat is CSS-animatie?
Animaties laten elementen geleidelijk van de ene stijl veranderen naar de andere stijl.
U kunt willekeurig een onbeperkt aantal CSS-eigenschappen wijzigen.
Om CSS-animaties te gebruiken, moet u eerst enkele keyframes specificeren voor de animatie.
De keyframes bevatten de stijl die het element op een specifieke tijd heeft.
@keyframes-regel
Als u in @keyframes
De regels specificeren de CSS-stijlen, en de animatie verandert geleidelijk van de huidige stijl naar de nieuwe stijl op een specifieke tijd.
Om de animatie effectief te maken, moet deze worden gebonden aan een element.
Het volgende voorbeeld bindt de "example"-animatie aan het <div>-element. De animatie duurt 4 seconden en verandert de achtergrondkleur van het <div>-element geleidelijk van "rood" naar "geel":
实例
/* Animatiecode */ @keyframes example { from {achtergrondkleur: rood;} to {achtergrondkleur: geel;} } /* Pas de animatie toe op dit element */ div { width: 100px; height: 100px; background-color: red; animation-name: example; animation-duration: 4s; }
Let op:animation-duration
De eigenschap definieert hoeveel tijd nodig is om de animatie te voltooien. Als deze niet is gespecificeerd animation-duration
Als de waarde van de eigenschap 0s (0 seconden) is, zal de animatie niet plaatsvinden, omdat de standaardwaarde 0s is.
In het bovenstaande voorbeeld hebben we de stijlverandering ingesteld wanneer deze verandert door gebruik te maken van de sleutelwoorden "from" en "to" (die respectievelijk 0% (begin) en 100% (einde) vertegenwoordigen).
U kunt ook percentages gebruiken. Door percentages te gebruiken, kunt u zo veel stijlveranderingen toevoegen als u wilt.
Het volgende voorbeeld zal de achtergrondkleur van het <div>-element wijzigen wanneer de animatie 25%, 50% voltooid is en de animatie 100% voltooid is:
实例
/* Animatiecode */ @keyframes example { 0% {achtergrondkleur: rood;} 25% {achtergrondkleur: geel;} 50% {background-color: blue;} 100% {background-color: green;} } /* Elementen die de animatie toepassen */ div { width: 100px; height: 100px; background-color: red; animation-name: example; animation-duration: 4s; }
Het volgende voorbeeld wijzigt de achtergrondkleur en de positie van het <div>-element wanneer de animatie 25%, 50% en 100% is voltooid:
实例
/* Animatiecode */ @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;} } /* Elementen die de animatie toepassen */ div { width: 100px; height: 100px; position: relative; background-color: red; animation-name: example; animation-duration: 4s; }
Vertragen van de animatie
animation-delay
De eigenschap bepaalt de vertragingstijd voordat de animatie begint.
Het volgende voorbeeld heeft een vertraging van 2 seconden voordat de animatie begint:
实例
div { width: 100px; height: 100px; position: relative; background-color: red; animation-name: example; animation-duration: 4s; animation-delay: 2s; }
Negatieve waarden zijn ook toegestaan. Als negatieve waarden worden gebruikt, begint de animatie alsof deze al N seconden heeft gespeeld.
In het volgende voorbeeld begint de animatie alsof deze al 2 seconden heeft gespeeld:
实例
div { width: 100px; height: 100px; position: relative; background-color: red; animation-name: example; animation-duration: 4s; animation-delay: -2s; }
Instellen van het aantal keren dat de animatie moet worden uitgevoerd
animation-iteration-count
De eigenschap specificeert het aantal keren dat de animatie moet worden uitgevoerd.
Het volgende voorbeeld laat de animatie 3 keer lopen voordat deze stopt:
实例
div { width: 100px; height: 100px; position: relative; background-color: red; animation-name: example; animation-duration: 4s; animation-iteration-count: 3; }
Hieronder wordt een voorbeeld gegeven waarbij de waarde "infinite" wordt gebruikt om de animatie oneindig voort te zetten:
实例
div { width: 100px; height: 100px; position: relative; background-color: red; animation-name: example; animation-duration: 4s; animation-iteration-count: infinite; }
Achterwaarts of wisselend laten lopen van de animatie
animation-direction
De eigenschap specificeert of de animatie voorwaarts, achterwaarts of in wisselende richting moet worden afgespeeld.
animation-direction
De eigenschap accepteert de volgende waarden:
normal
- De animatie speelt normaal af (voorwaarts). Standaardwaardereverse
- De animatie speelt in de tegengestelde richting (achterwaarts) afalternate
- De animatie speelt eerst voorwaarts af, en vervolgens achterwaartsalternate-reverse
- De animatie speelt eerst achterwaarts af, en vervolgens voorwaarts
Het volgende voorbeeld laat de animatie in de tegengestelde richting (achterwaarts) lopen:
实例
div { width: 100px; height: 100px; position: relative; background-color: red; animation-name: example; animation-duration: 4s; animation-direction: reverse; }
Hieronder wordt een voorbeeld gegeven waarbij de waarde "alternate" wordt gebruikt om de animatie eerst voorwaarts te laten lopen, en vervolgens achterwaarts:
实例
div { width: 100px; height: 100px; position: relative; background-color: red; animation-name: example; animation-duration: 4s; animation-iteration-count: 2; animation-direction: alternate; }
Hieronder wordt een voorbeeld gegeven waarbij de waarde "alternate-reverse" wordt gebruikt om de animatie eerst achterwaarts te laten lopen, en vervolgens voorwaarts:
实例
div { width: 100px; height: 100px; position: relative; background-color: red; animation-name: example; animation-duration: 4s; animation-iteration-count: 2; animation-direction: alternate-reverse; }
Specificeer de snelheidskromme van de animatie
animation-timing-function
De eigenschap bepaalt de snelheidskromme van de animatie.
animation-timing-function
De eigenschap accepteert de volgende waarden:
ease
- Specificeer een animatie die begint langzaam, vervolgens versnelt en tenslotte langzaam afbreekt (standaard)linear
- Bepaal een animatie met dezelfde snelheid van begin tot eindeease-in
- Bepaal een animatie met een langzame startease-out
- Bepaal een animatie met een langzame finishease-in-out
- Specificeer een animatie met een langzamere start en finishcubic-bezier(n,n,n,n)
- Definieer je eigen waarden in de driemaal bijkomende functie
De volgende voorbeelden tonen enkele van de verschillende snelheidscurven die je kunt gebruiken:
实例
#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;}
Specificeer het vullen van de animatiemodus
CSS animaties beïnvloeden het element niet voordat de eerste keyframe wordt afgespeeld of na het afspelen van de laatste keyframe.animation-fill-mode
kan de eigenschap dit gedrag overwegen.
Bij het niet afspelen van de animatie (voor het begin, na het einde, of beide einde momenten),animation-fill-mode
De eigenschap bepaalt de stijl van het doel-element.
De animation-fill-mode eigenschap accepteert de volgende waarden:
none
- Standaardwaarde. De animatie past geen stijlen toe op het element voordat of na het uitvoeren.forwards
- Het element behoudt de stijlwaarden van de laatste keyframe (afhankelijk van de animation-direction en de animation-iteration-count).backwards
- Het element krijgt de stijlwaarden van de eerste keyframe (afhankelijk van de animation-direction) en behoudt deze waarde gedurende de animatiedelays.both
- De animatie volgt zowel de voorwaartse als de achterwaartse regels, waardoor de animatie-eigenschappen in beide richtingen worden uitgebreid.
Dit voorbeeld laat zien hoe de <div> element de stijlwaarden van de laatste keyframe behoudt aan het einde van de animatie:
实例
div { width: 100px; height: 100px; background: red; position: relative; animation-name: example; animation-duration: 3s; animation-fill-mode: forwards; }
下面的例子在动画开始之前(在动画延迟期间)使 <div> 元素获得由第一个关键帧设置的样式值:
实例
div { width: 100px; height: 100px; background: red; position: relative; animation-name: example; animation-duration: 3s; animation-delay: 2s; animation-fill-mode: backwards; }
下面的例子在动画开始之前使 <div> 元素获得第一个关键帧设置的样式值,以及在动画结束时保留最后一个关键帧的样式值:
实例
div { width: 100px; height: 100px; background: red; position: relative; animation-name: example; animation-duration: 3s; animation-delay: 2s; animation-fill-mode: both; }
动画简写属性
下例使用六种动画属性:
实例
div { animation-name: example; animation-duration: 5s; animation-timing-function: linear; animation-delay: 2s; animation-iteration-count: infinite; animation-direction: alternate; }
使用简写的 animation
属性也可以实现与上例相同的动画效果:
实例
div { animation: example 5s linear 2s infinite alternate; }
CSS 动画属性
下表列出了 @keyframes 规则和所有 CSS 动画属性:
属性 | 描述 |
---|---|
@keyframes | 定义动画模式。 |
animation | 设置所有动画属性的简写属性。 |
animation-delay | 定义动画开始的延迟。 |
animation-direction | 定义动画是向前播放、向后播放还是交替播放。 |
animation-duration | 定义动画完成一个周期应花费的时间。 |
animation-fill-mode | 定义元素在不播放动画时的样式(在开始前、结束后,或两者同时)。 |
animation-iteration-count | 定义动画应播放的次数。 |
animation-name | 定义 @keyframes 动画的名称。 |
animation-play-state | Stelt in of de animatie moet draaien of stil blijven. |
animation-timing-function | Stelt de snelheidskromme van de animatie in. |
- Vorige pagina CSS overgangen
- Volgende pagina CSS tooltip