Animation en CSS

et JavaScript

Raconté par Vincent Jugé
sur la base d'un cours créé par Rémi Forax

Transition en CSS

CSS3 Transition


Working Draft - 11 October 2018
https://www.w3.org/TR/css3-transitions/

Manipulation du DOM

Appeler la méthode element.classList.toggle(class) va ajouter (ou enlever) la classe class à un element HTML.

             



Transformation

La propriété transform permet de spécifier une tranformation (translation, rotation, etc).

             



Transition CSS

La propriété transition permet de demander une animation qui va effectuer une interpolation entre les deux positions.

             



Rotation et étirement

En plus des translations, on peut faire des rotations (rotate) et des agrandissements (scale).

         



Transformation 3D

Et on peut faire des trucs cool en 3D !




Les propriétés de transition

transition-property
propriété(s) qui vont changer
transition-duration
temps de l'animation (en ms ou s)
transition-timing-function
comment se fait l'interpolation

transition regroupe ces propriétés, dans cet ordre.

Opacité

L'opacité peut aussi être animée.




Transitions avec plusieurs attributs

On sépare par des ',' si on a plusieurs attributs.




Easing

On peut choisir la fonction d'interpolation
linear, ease-in, ease-out, ease-in-out.




Cela permet de rendre le mouvement plus naturel.

Easing - Courbe de Bézier

On peut définir précisément la courbe de Bézier à utiliser.

Timing function

cubic-bezier

ease-in-out


Animation en CSS

CSS Animations Level 1


Editor’s Draft - 16 January 2020
https://drafts.csswg.org/css-animations/

Deux concepts

keyframe
état de l'animation définie par l'utilisateur pour un temps donné
animation
indique comment doit se dérouler la séquence de keyframes

Animation

@keyframes permet de définir des keyframes avec un nom.
animation permet d'animer les keyframes.



Animation & Transformation

On peut bien sûr utiliser les transformations


L'animation se fait en regardant ce qui change d'une keyframe à l'autre.

Les propriétés de Animation

animation-name
propriété(s) qui vont changer
animation-duration
temps de l'animation (en ms ou s)
animation-timing-function
comment se fait l'interpolation
animation-iteration-count
nombre de répétitions de l'animation ou infinite
animation-direction
normal ou reverse

animation regroupe ces propriétés, dans cet ordre.

Animation à la main en JavaScript

window.requestAnimationFrame prend une fonction en paramètre qui est appelé avec le temps courant.
box.style permet d'obtenir le style d'un objet DOM.


On sauvegarde timestamp dans start pour travailler par rapport à un temps initial.


Avec la possibilité d'aller à l'envers.