Les animations
#1
Qu'est ce qu'une animation ?
Une animation est une séquence de différentes configurations CSS d'un élément HTML qui se succèdent dans le temps.
La création de l'animation se fait en trois étapes :
- Dans la première étape il va falloir créer l'élément HTML que l'on va animer. On va le créer dans une configuration CSS initiale. Ici je décide d'animer un rectangle de cent pixels sur cent pixels. Je l'implante en HTML et je lui donne une configuration CSS initiale.
- Dans la deuxième étape il faut décrire l'animation elle même. Au minimum il faut lui donner un nom en utilisant la propriété
animation-name
puis spécifier sa durée en utilisant la propriétéanimation-duration
. Ici je précise aussi que l'animation itérera indéfiniment en utilisantanimation-iteration-count: infinite;
- Dans la troisième étape il va falloir décrire la séquence des différentes configurations CSS. On va utiliser une règle
@keyframes
que l'on va associer au nom de l'animation. Puis dans cette règle on va découper le temps en tranches de 0% à 100% de la durée de l'animation. Enfin pour chaque tranche on va définir la configuration CSS de l'élément sur lequel porte l'animation. Ici on fait varier la largeur du rectangle.
#2
Un exemple de fondu enchaîné entre deux images
On place deux images dans un conteneur.
Le conteneur est positionné en relative
. Les deux images sont positionnées en absolute
. Le conteneur est un ancêtre positionné pour ces deux images. Les deux images se superposent. La dernière dans le code HTML est par dessus la première.
Dans l'animation on va intervenir sur l'opacité de l'image de dessus pour la rendre tour à tour opaque puis transparente. Evidemment quand elle devient transparente on voit l'image de dessous. C'est là que se produit l'effet de fondu enchaîné.
Dans cet exemple on utilise une nouvelle propriété animation-direction
. Ici avec la valeur alternate
l'animation sera rejouée en sens inverse lorsque celle-ci se terminera dans le sens normal.


#3
Un exemple d'une bande d'images qui défilent dans une fenêtre
Supposons que nous ayons N images (ici 7) et que l'on veuille les faire défiler dans une fenêtre de la taille de P images (ici 3)
Il faudra faire N-P décalages (ici 7-3 soit 4) et diviser l'intervalle de temps en N-P+1 (ici 7-3+1 soit 5) intervalles de temps.

Dans notre exemple nos images sont de forme carrée et ont un côté de 204 pixels. On va les présenter dans des conteneurs de 220 pixels de côté. Elles seront centrées horizontalement et verticalement dans ces conteneurs.
La bande d'image est placée dans une liste ul
avec une image dans chaque li
. La bande va défiler dans le #conteneur
.
La liste ul
est gérée en display:table;
et chaque li
en display:table-cell;
de façon à constituer une bande horizontale de N images.
Chaque li
aura une taille de 220px par 220px.
La taille de ul
sera de N fois 220px soit ici de 7 * 220px = 1540px.
La taille du #conteneur
sera de P images soit ici de 3 * 220px = 660px.
On utilise ici la propriété raccourcie animation
qui contient les valeurs de animation-name
, animation-duration
, animation-timing-function
, animation-delay
, animation-iteration-count
, animation-direction
.
Pour connaître le nombre d'étapes de l'animation on divise l'intervalle de durée de 100% par 5 ce qui fait 20%.
L'animation dure 20 secondes. Chaque étape durera 4 secondes.
La première étape de l'animation ira de 0% à 20% et il n'y aura pas de décalage.
La deuxième étape de l'animation ira de 20% à 40% et il y aura 1 décalage de 220px.
La troisième étape de l'animation .....
Vous pouvez utiliser les mots-clés from
à la place du 0%
et to
à la place du 100%
. Ce sont juste des alias qui ne changent rien au fonctionnement de l'animation.