CSS Animaties

CSS Animaties

CSS maakt animatie van HTML elementen mogelijk zonder gebruik te maken van JavaScript of Flash!

CSS

In dit hoofdstuk leert u de volgende eigenschappen kennen:

  • @keyframes
  • animation-name
  • animation-duration
  • animation-delay
  • animation-iteration-count
  • animation-direction
  • animation-timing-function
  • animation-fill-modeanimation

Browserondersteuning voor animaties

De getallen in de tabel geven de eerste browserversie aan die de eigenschap volledig ondersteunt.

Eigenschap
@keyframes 43.0 10.0 16.0 9.0 30.0
animation-name 43.0 10.0 16.0 9.0 30.0
animatie-duur 43.0 10.0 16.0 9.0 30.0
animatie-vertraging 43.0 10.0 16.0 9.0 30.0
animation-iteration-count 43.0 10.0 16.0 9.0 30.0
animatie-richting 43.0 10.0 16.0 9.0 30.0
animatie-timing-functie 43.0 10.0 16.0 9.0 30.0
animation-fill-mode 43.0 10.0 16.0 9.0 30.0
animatie 43.0 10.0 16.0 9.0 30.0

Wat zijn CSS-animaties?

Een animatie laat een element geleidelijk veranderen van de ene stijl naar de andere.

Je kunt zoveel CSS-eigenschappen veranderen als je wilt, zo vaak als je wilt.

Om CSS-animaties te gebruiken, moet je eerst een aantal keyframes opgeven voor de animatie.

Keyframes houden vast welke stijlen het element op bepaalde momenten zal hebben.

De @keyframes regel

Wanneer je CSS stijlen specificeert binnen de @keyframes regel, zal de animatie op bepaalde tijden geleidelijk veranderen van de huidige stijl naar de nieuwe stijl.

Om een animatie te laten werken, moet je de animatie aan een element binden.

Het volgende voorbeeld bindt de “voorbeeld”-animatie aan het <div> element. De animatie duurt 4 seconden, en verandert de achtergrondkleur van het <div> element geleidelijk van “rood” naar “geel”:

Voorbeeld

/* De animatie code */
@keyframes voorbeeld {
van {achtergrondkleur: rood;}
tot {achtergrondkleur: geel;}
}
/* Het element om de animatie op toe te passen */
div {
breedte: 100px;
hoogte: 100px;
achtergrondkleur: rood;
animatie-naam: voorbeeld;
animatie-duur: 4s;
}

Probeer het zelf ”

Note: De animation-duration eigenschap definieert hoe lang het moet duren voordat een animatie klaar is. Als de animation-duration eigenschap niet wordt opgegeven, zal er geen animatie plaatsvinden, omdat de standaardwaarde 0s (0 seconden) is.

In het bovenstaande voorbeeld hebben we aangegeven wanneer de stijl zal veranderen door gebruik te maken van de trefwoorden “from” en “to” (die staan voor 0% (start) en 100% (complete)).

Het is ook mogelijk om percent te gebruiken. Door procenten te gebruiken, kunt u zo veel stijlwijzigingen toevoegen als u wilt.

Het volgende voorbeeld wijzigt de achtergrondkleur van het <div> element wanneer de animatie 25% voltooid is, 50% voltooid is, en nogmaals wanneer de animatie 100% voltooid is:

Voorbeeld

/* De animatiecode */
@keyframes voorbeeld{
0% {background-color: rood;}
25% {achtergrondkleur: geel;}
50% {achtergrondkleur: blauw;}
100% {achtergrondkleur: groen;}
}
/* Het element om de animatie op toe te passen */
div {
width: 100px;
hoogte: 100px;
achtergrondkleur: rood;
animatie-naam: voorbeeld;
animatie-duration: 4s;
}

Probeer het zelf ”

Het volgende voorbeeld zal zowel de achtergrondkleur als de positie van het <div> element veranderen wanneer de animatie 25% voltooid is, 50% voltooid is, en nogmaals wanneer de animatie 100% voltooid is:

Voorbeeld

/* De animatie code */
@keyframes voorbeeld{
0% {background-color:rood; left:0px; top:0px;}
25% {achtergrondkleur:geel; left:200px; top:0px;}
50% {achtergrondkleur:blauw; left:200px; top:200px;}
75% {achtergrondkleur:groen; left:0px; top:200px;}
100% {achtergrondkleur:rood; left:0px; top:0px;}
}
/* Het element om de animatie op toe te passen */
div {
width: 100px;
height: 100px;
position: relative;
background-color: red;
animation-name: example;
animation-duration: 4s;
}

Probeer het zelf ”

Vertraag een animatie

De animation-delay eigenschap specificeert een vertraging voor het starten van een animatie.

Het volgende voorbeeld heeft een vertraging van 2 seconden voor het starten van de animatie:

Voorbeeld

div {
Breedte: 100px;
Hoogte: 100px;
positie: relatief;
achtergrondkleur: rood;
animatie-naam: voorbeeld;
animatie-duur: 4s;
animatie-vertraging: 2s;
}

Probeer het zelf ”

Negatieve waarden zijn ook toegestaan. Bij gebruik van negatieve waarden, zal de animatie starten alsof hij al N seconden speelt.

In het volgende voorbeeld start de animatie alsof hij al 2 seconden speelt:

Voorbeeld

div {
breedte: 100px;
hoogte: 100px;
positie: relatief;
achtergrondkleur: rood;
animatie-naam: voorbeeld;
animatie-duration: 4s;
animatie-vertraging: -2s;
}

Probeer het zelf ”

Hoe vaak een animatie moet draaien

De animation-iteration-count eigenschap specificeert het aantal keren dat een animatie moet draaien.

Het volgende voorbeeld zal de animatie 3 keer laten lopen voordat hij stopt:

Voorbeeld

div {
breedte: 100px;
hoogte: 100px;
positie: relatief;
achtergrondkleur: rood;
animatie-naam: voorbeeld;
animatie-duur: 4s;
animatie-iteratie-count: 3;
}

Probeer het zelf ”

Het volgende voorbeeld gebruikt de waarde “oneindig” om de animatie eeuwig door te laten gaan:

Voorbeeld

div {
breedte: 100px;
hoogte: 100px;
positie: relatief;
achtergrondkleur: rood;
animatie-naam: voorbeeld;
animatie-duration: 4s;
animatie-iteratie-telling: oneindig;
}

Probeer het zelf ”

Afspelen animatie in omgekeerde richting of in afwisselende cycli

De animation-direction eigenschap geeft aan of een animatie vooruit, achteruit of in afgewisselde cycli moet worden afgespeeld.

De eigenschap animation-direction kan de volgende waarden hebben:

  • normal – De animatie wordt als normaal (voorwaarts) afgespeeld. Dit is standaard
  • reverse – De animatie wordt in omgekeerde richting afgespeeld (achteruit)
  • alternate – De animatie wordt eerst vooruit afgespeeld, en dan achteruit
  • alternate-reverse – De animatie wordt eerst achteruit en dan vooruit afgespeeld

Het volgende voorbeeld laat de animatie in omgekeerde richting (achteruit) lopen:

Voorbeeld

div {
width: 100px;
height: 100px;
position: relative;
background-color: red;
animation-name: example;
animation-duration: 4s;
animatie-richting: achteruit;
}

Probeer het zelf ”

Het volgende voorbeeld gebruikt de waarde “alternate” om de animatie eerst vooruit te laten lopen en dan achteruit:

Voorbeeld

div {
breedte: 100px;
hoogte: 100px;
positie: relatief;
achtergrondkleur: rood;
animatie-naam: voorbeeld;
animatie-duration: 4s;
animatie-iteratie-count: 2;
animatie-richting: alternate;
}

Probeer het zelf ”

Het volgende voorbeeld gebruikt de waarde “alternate-reverse” om de animatie eerst achteruit te laten lopen en dan vooruit:

Voorbeeld

div {
breedte: 100px;
hoogte: 100px;
positie: relatief;
achtergrondkleur: rood;
animatie-naam: voorbeeld;
animatie-duration: 4s;
animatie-iteratie-count: 2;
animatie-richting: alternate-reverse;
}

Probeer het zelf ”

Specificeer de snelheidskromme van de animatie

De animation-timing-function eigenschap specificeert de snelheidskromme van de animatie.

De eigenschap animation-timing-function kan de volgende waarden hebben:

  • ease – Specificeert een animatie met een langzame start, dan snel en dan langzaam eindigt (dit is de standaardinstelling)
  • linear – Geeft een animatie met dezelfde snelheid van begin tot eind
  • ease-in – Geeft een animatie met een langzame start
  • ease-out – Geeft een animatie met een langzame start
  • ease-out – Geeft een animatie met een langzame start
  • ease-out. Geeft een animatie met een langzaam einde
  • ease-in-out – Geeft een animatie met een langzame start en einde
  • cubic-bezier(n,n,n,n) – Hiermee kunt u uw eigen waarden definiëren in een kubus-bezier functie

Het volgende voorbeeld toont een aantal van de verschillende snelheidscurves die kunnen worden gebruikt:

Voorbeeld

#div1 {animatie-timing-functie: lineair;}
#div2 {animatie-timing-functie: ease;}
#div3 {animatie-timing-functie: ease-in;}
#div4 {animatie-timing-functie: ease-out;}
#div5 {animatie-timing-functie: ease-in-out;}

Probeer het zelf ”

Specifieer de fill-mode voor een animatie

CSS animaties hebben geen effect op een element voordat het eerste keyframe is afgespeeld of nadat het laatste keyframe is afgespeeld. De animation-fill-mode eigenschap kan dit gedrag opheffen.

De animation-fill-mode eigenschap specificeert een stijl voor het doelelement wanneer de animatie niet wordt afgespeeld (voordat het begint, nadat het eindigt, of beide).

De eigenschap animation-fill-mode kan de volgende waarden hebben:

  • none – Standaardwaarde. Animatie past geen stijlen toe op het element voor of na het uitvoeren
  • forwards – Het element behoudt de stijlwaarden die door het laatste keyframe zijn ingesteld (afhankelijk van animation-richting en animatie-iteratie-telling)
  • backwards – Het element krijgt de stijlwaarden die is ingesteld door het eerste keyframe (afhankelijk van animatie-richting) en behoudt deze gedurende de animatie-vertragingsperiode
  • both – De animatie zal de regels volgen voor zowel voorwaarts als achterwaarts, waardoor de animatie-eigenschappen in beide richtingen worden uitgebreid

Het volgende voorbeeld laat het <div> element de stijlwaarden van het laatste keyframe behouden wanneer de animatie eindigt:

Voorbeeld

div {
breedte: 100px;
hoogte: 100px;
achtergrond: rood;
positie: relatief;
animatie-naam: voorbeeld;
animatie-duration: 3s;
animatie-vul-mode: voorwaarts;
}

Probeer het zelf ”

Het volgende voorbeeld laat het <div> element de stijlwaarden krijgen die zijn ingesteld door het eerste keyframe voordat de animatie begint (tijdens de animatie-vertragingsperiode):

Voorbeeld

div {
breedte: 100px;
hoogte: 100px;
achtergrond: rood;
positie: relatief;
animatie-naam: voorbeeld;
animatie-duration: 3s;
animatie-delay: 2s;
animatie-vul-mode: backwards;
}

Probeer het zelf ”

Het volgende voorbeeld laat het <div> element de stijlwaarden krijgen die zijn ingesteld door het eerste keyframe voordat de animatie begint, en de stijlwaarden van het laatste keyframe behouden wanneer de animatie eindigt:

Voorbeeld

div {
breedte: 100px;
hoogte: 100px;
achtergrond: rood;
positie: relatief;
animatie-naam: voorbeeld;
animatie-duration: 3s;
animatie-vertraging: 2s;
animatie-vul-mode: beide;
}

Probeer het zelf ”

Animatie steno eigenschap

Het onderstaande voorbeeld gebruikt zes van de animatie eigenschappen:

Voorbeeld

div{
animatie-naam: voorbeeld;
animatie-duration: 5s;
animatie-timing-functie: lineair;
animatie-vertraging: 2s;
animatie-iteratie-telling: oneindig;
animatie-richting: alternate;
}

Probeer het zelf ”

Hetzelfde animatie-effect als hierboven kan worden bereikt door gebruik te maken van de steno animation eigenschap:

Voorbeeld

div{
animatie: voorbeeld 5s lineair 2s oneindig afwisselend;
}

Probeer het zelf ”

Probeer het zelf met Oefeningen!

CSS Animatie Eigenschappen

De volgende tabel toont de @keyframes regel en alle CSS animatie eigenschappen:

animation-name

Eigenschap Beschrijving
@keyframes Geeft aan de animatiecode
animatie Een steno eigenschap voor het instellen van alle animatie-eigenschappen
animatie-vertraging Specificeert een vertraging voor het starten van een animatie
animatie-richting Specificeert of een animatie vooruit moet worden afgespeeld, of om en om moet worden afgespeeld
animatie-duration Specifieert hoe lang een animatie over een cyclus moet doen
animation-fill-mode Specifieert een stijl voor het element wanneer de animatie niet wordt afgespeeld (voordat hij begint, nadat het eindigt, of beide)
animation-iteration-count Specifieert het aantal keren dat een animatie moet worden afgespeeld
Specifieert de naam van de @keyframes animatie
animation-play-state Specifieert of de animatie wordt uitgevoerd of gepauzeerd
animatie-timing-functie Specifieert de snelheidscurve van de animatie

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *