Tutoriel CSS

CSS ACCUEIL Présentation CSS Syntaxe CSS Sélecteurs CSS CSS Comment faire Commentaires CSS Couleurs CSS Arrière-plans CSS Bordures CSS Marges CSS Rembourrage CSS CSS Hauteur/Largeur Modèle de boîte CSS Aperçu CSS Texte CSS Polices CSS Icônes CSS Liens CSS Listes CSS CSS Tables Affichage CSS CSS Max-width Poste CSS Index Z CSS Débordement CSS Flottant CSS Bloc en ligne CSS Alignement CSS Combinateurs CSS Pseudo-classe CSS Pseudo-élément CSS Opacité CSS Barre de navigation CSS Listes déroulantes CSS Galerie d'images CSS Sprites d'image CSS Sélecteurs d'attributs CSS Formulaires CSS Compteurs CSS Mise en page du site Web CSS Unités CSS Spécificité CSS CSS !important Fonctions mathématiques CSS

CSS avancé

Coins arrondis CSS Images de bordure CSS Arrière-plans CSS Couleurs CSS Mots-clés de couleur CSS Dégradés CSS Ombres CSS Effets de texte CSS Polices Web CSS Transformations CSS 2D Transformations 3D CSS Transitions CSS Animation CSS Info-bulles CSS CSS Style Images Réflexion d'image CSS Ajustement d'objet CSS Position d'objet CSS Masquage CSS Boutons CSS Pagination CSS CSS plusieurs colonnes Interface utilisateur CSS Variables CSS Dimensionnement des boîtes CSS Requêtes média CSS Exemples CSS MQ Boîte flexible CSS

CSS réactif

RWD Introduction Fenêtre RWD Affichage de la grille RWD Requêtes multimédia RWD Images RWD Vidéos RWD Cadres RWD Modèles RWD

Grille CSS

Grille d'introduction Conteneur de grille Élément de grille

CSS SASS

Tutoriel SASS

Exemples CSS

Modèles CSS Exemples CSS CSS Quiz Exercices CSS Certificat CSS

Références CSS

Référence CSS Sélecteurs CSS Fonctions CSS Audit de référence CSS Polices sécurisées pour le Web CSS CSS animable Unités CSS Convertisseur CSS PX-EM Couleurs CSS Valeurs de couleur CSS Valeurs CSS par défaut Prise en charge du navigateur CSS

Animation CSS


Animation CSS

CSS permet l'animation d'éléments HTML sans utiliser JavaScript ou Flash !

CSS

Dans ce chapitre, vous découvrirez les propriétés suivantes :

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

Prise en charge du navigateur pour les animations

Les nombres dans le tableau indiquent la première version du navigateur qui prend entièrement en charge la propriété.

Property
@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

Qu'est-ce qu'une animation CSS ?

Une animation permet à un élément de passer progressivement d'un style à un autre.

Vous pouvez modifier autant de propriétés CSS que vous le souhaitez, autant de fois que vous le souhaitez.

Pour utiliser l'animation CSS, vous devez d'abord spécifier des images clés pour l'animation.

Les images clés contiennent les styles que l'élément aura à certains moments.


La règle @keyframes

Lorsque vous spécifiez des styles CSS dans la @keyframes règle, l'animation passera progressivement du style actuel au nouveau style à certains moments.

Pour qu'une animation fonctionne, vous devez lier l'animation à un élément.

L'exemple suivant lie l'animation "example" à l'élément <div>. L'animation durera 4 secondes et changera progressivement la couleur d'arrière-plan de l'élément <div> de "rouge" à "jaune":

Exemple

/* The animation code */
@keyframes example {
  from {background-color: red;}
  to {background-color: yellow;}
}

/* The element to apply the animation to */
div {
  width: 100px;
  height: 100px;
  background-color: red;
  animation-name: example;
  animation-duration: 4s;
}

Remarque : La animation-durationpropriété définit la durée d'exécution d'une animation. Si la animation-durationpropriété n'est pas spécifiée, aucune animation ne se produira, car la valeur par défaut est 0s (0 seconde). 

Dans l'exemple ci-dessus, nous avons spécifié quand le style changera en utilisant les mots-clés "from" et "to" (qui représentent 0 % (début) et 100 % (terminé)).

Il est également possible d'utiliser des pourcentages. En utilisant le pourcentage, vous pouvez ajouter autant de changements de style que vous le souhaitez.

L'exemple suivant changera la couleur d'arrière-plan de l'élément <div> lorsque l'animation sera terminée à 25 %, terminée à 50 %, et à nouveau lorsque l'animation sera terminée à 100 % :

Exemple

/* The animation code */
@keyframes example {
  0%   {background-color: red;}
  25%  {background-color: yellow;}
  50%  {background-color: blue;}
  100% {background-color: green;}
}

/* The element to apply the animation to */
div {
  width: 100px;
  height: 100px;
  background-color: red;
  animation-name: example;
  animation-duration: 4s;
}

L'exemple suivant changera à la fois la couleur d'arrière-plan et la position de l'élément <div> lorsque l'animation sera terminée à 25 %, terminée à 50 %, et à nouveau lorsque l'animation sera terminée à 100 % :

Exemple

/* The animation code */
@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;}
}

/* The element to apply the animation to */
div {
  width: 100px;
  height: 100px;
  position: relative;
  background-color: red;
  animation-name: example;
  animation-duration: 4s;
}


Retarder une animation

La animation-delaypropriété spécifie un délai pour le démarrage d'une animation.

L'exemple suivant a un délai de 2 secondes avant de démarrer l'animation :

Exemple

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

Les valeurs négatives sont également autorisées. Si vous utilisez des valeurs négatives, l'animation démarrera comme si elle avait déjà joué pendant N secondes.

Dans l'exemple suivant, l'animation démarrera comme si elle avait déjà joué pendant 2 secondes :

Exemple

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

Définir combien de fois une animation doit s'exécuter

La animation-iteration-countpropriété spécifie le nombre de fois qu'une animation doit s'exécuter.

L'exemple suivant exécutera l'animation 3 fois avant de s'arrêter :

Exemple

div {
  width: 100px;
  height: 100px;
  position: relative;
  background-color: red;
  animation-name: example;
  animation-duration: 4s;
  animation-iteration-count: 3;
}

L'exemple suivant utilise la valeur "infinite" pour que l'animation se poursuive indéfiniment :

Exemple

div {
  width: 100px;
  height: 100px;
  position: relative;
  background-color: red;
  animation-name: example;
  animation-duration: 4s;
  animation-iteration-count: infinite;
}

Exécuter l'animation en sens inverse ou en cycles alternés

La animation-directionpropriété spécifie si une animation doit être lue en avant, en arrière ou en cycles alternés.

La propriété animation-direction peut avoir les valeurs suivantes :

  • normal- L'animation est jouée normalement (en avant). C'est par défaut
  • reverse- L'animation est jouée en sens inverse (vers l'arrière)
  • alternate - L'animation est d'abord jouée en avant, puis en arrière
  • alternate-reverse- L'animation est d'abord lue en arrière, puis en avant

L'exemple suivant exécutera l'animation dans le sens inverse (vers l'arrière) :

Exemple

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

L'exemple suivant utilise la valeur "alternate" pour que l'animation s'exécute d'abord en avant, puis en arrière :

Exemple

div {
  width: 100px;
  height: 100px;
  position: relative;
  background-color: red;
  animation-name: example;
  animation-duration: 4s;
  animation-iteration-count: 2;
  animation-direction: alternate;
}

L'exemple suivant utilise la valeur "alternate-reverse" pour que l'animation s'exécute d'abord en arrière, puis en avant :

Exemple

div {
  width: 100px;
  height: 100px;
  position: relative;
  background-color: red;
  animation-name: example;
  animation-duration: 4s;
  animation-iteration-count: 2;
  animation-direction: alternate-reverse;
}

Spécifiez la courbe de vitesse de l'animation

La animation-timing-functionpropriété spécifie la courbe de vitesse de l'animation.

La propriété animation-timing-function peut avoir les valeurs suivantes :

  • ease - Spécifie une animation avec un démarrage lent, puis rapide, puis se termine lentement (c'est la valeur par défaut)
  • linear - Spécifie une animation avec la même vitesse du début à la fin
  • ease-in - Spécifie une animation avec un démarrage lent
  • ease-out - Spécifie une animation avec une fin lente
  • ease-in-out - Spécifie une animation avec un début et une fin lents
  • cubic-bezier(n,n,n,n)- Vous permet de définir vos propres valeurs dans une fonction cubique-bézier

L'exemple suivant montre quelques-unes des différentes courbes de vitesse qui peuvent être utilisées :

Exemple

#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;}

Spécifier le mode de remplissage pour une animation

Les animations CSS n'affectent pas un élément avant la lecture de la première image clé ou après la lecture de la dernière image clé. La propriété animation-fill-mode peut remplacer ce comportement.

La animation-fill-modepropriété spécifie un style pour l'élément cible lorsque l'animation n'est pas en cours de lecture (avant qu'elle ne démarre, après qu'elle se termine ou les deux).

La propriété animation-fill-mode peut avoir les valeurs suivantes :

  • none- Valeur par défaut. L'animation n'appliquera aucun style à l'élément avant ou après son exécution
  • forwards- L'élément conservera les valeurs de style définies par la dernière image clé (dépend de la direction de l'animation et du nombre d'itérations de l'animation)
  • backwards - L'élément obtiendra les valeurs de style définies par la première image clé (dépend de la direction de l'animation) et les conservera pendant la période de retard de l'animation
  • both - L'animation suivra les règles pour l'avant et l'arrière, étendant les propriétés de l'animation dans les deux sens

L'exemple suivant permet à l'élément <div> de conserver les valeurs de style de la dernière image clé lorsque l'animation se termine :

Exemple

div {
  width: 100px;
  height: 100px;
  background: red;
  position: relative;
  animation-name: example;
  animation-duration: 3s;
  animation-fill-mode: forwards;
}

L'exemple suivant permet à l'élément <div> d'obtenir les valeurs de style définies par la première image clé avant le début de l'animation (pendant la période de délai d'animation) :

Exemple

div {
  width: 100px;
  height: 100px;
  background: red;
  position: relative;
  animation-name: example;
  animation-duration: 3s;
  animation-delay: 2s;
  animation-fill-mode: backwards;
}

L'exemple suivant permet à l'élément <div> d'obtenir les valeurs de style définies par la première image clé avant le démarrage de l'animation et de conserver les valeurs de style de la dernière image clé lorsque l'animation se termine :

Exemple

div {
  width: 100px;
  height: 100px;
  background: red;
  position: relative;
  animation-name: example;
  animation-duration: 3s;
  animation-delay: 2s;
  animation-fill-mode: both;
}

Propriété de raccourci d'animation

L'exemple ci-dessous utilise six des propriétés d'animation :

Exemple

div {
  animation-name: example;
  animation-duration: 5s;
  animation-timing-function: linear;
  animation-delay: 2s;
  animation-iteration-count: infinite;
  animation-direction: alternate;
}

Le même effet d'animation que ci-dessus peut être obtenu en utilisant la animationpropriété abrégée :

Exemple

div {
  animation: example 5s linear 2s infinite alternate;
}

Testez-vous avec des exercices

Exercer:

Ajoutez une animation de 2 secondes pour l'élément <div>, qui change la couleur du rouge au bleu. Appelez l'animation "exemple".

<style>
div {
  width: 100px;
  height: 100px;
  background-color: red;
  animation-name: ;
  : 2s;
}

@keyframes example {
  from {: red;}
  to {: blue;}
}
</style>

<body>
  <div>This is a div</div>
</body>


Propriétés d'animation CSS

Le tableau suivant répertorie la règle @keyframes et toutes les propriétés d'animation CSS :

Property Description
@keyframes Specifies the animation code
animation A shorthand property for setting all the animation properties
animation-delay Specifies a delay for the start of an animation
animation-direction Specifies whether an animation should be played forwards, backwards or in alternate cycles
animation-duration Specifies how long time an animation should take to complete one cycle
animation-fill-mode Specifies a style for the element when the animation is not playing (before it starts, after it ends, or both)
animation-iteration-count Specifies the number of times an animation should be played
animation-name Specifies the name of the @keyframes animation
animation-play-state Specifies whether the animation is running or paused
animation-timing-function Specifies the speed curve of the animation