21 Transitions & Animations

# Transitions

Avec la pseudo-classe :hover vous pouvez décrire ce qui devrait arriver à un élément HTML lorsque vous le survolez. Le bouton suivant permet de changer la couleur de fond.

    <a class="button" href="https://duckduckgo.com">
      Je suis un bouton
    </a>
    .button {
      background-color: royalblue;
      color: white;
      border-radius: 0.5rem;
    }
    
    .button:hover {
      background-color: orange;
    }

⚒ tester ce code

Vous pouvez voir que le changement est instantané et qu'il n'y a pas de délai entre le changement de la couleur de fond. Avec la propriété "transition", vous pouvez animer entre les propriétés. Cela se fait en définissant ce qui suit sur la classe originale ".button" :

    .button {
        background-color: royalblue;
        color: white;
        border-radius: 0.5rem;
        transition-property: background-color;
        transition-duration: 1s;
        transition-timing-function: linear;
    }
    
    .button:hover {
        background-color: orange;
    }

⚒ tester ce code

Vous pouvez également animer plusieurs propriétés indépendamment. Vous devez veiller à séparer les valeurs par une virgule et à respecter le bon ordre. Si vous voulez animer toutes les propriétés, vous pouvez écrire transition-property: all.

.button {
background-color: royalblue;
color: white;
border-radius: 0.5rem;
transition-property: background-color, color;
transition-duration: 1s, 0.5s;
transition-timing-function: linear;
}

.button:hover {
background-color: orange;
color: black;
}

# Animations

Les animations ne nĂ©cessitent aucune interaction, comme un ".hover" avec le curseur, par rapport aux transitions. Avec les animations, vous dĂ©crivez un ensemble de propriĂ©tĂ©s qui doivent ĂȘtre animĂ©es vers un autre ensemble de propriĂ©tĂ©s. Vous pouvez considĂ©rer cela comme une transition. Chaque Ă©tape est appelĂ©e "keyframe" en CSS. Dans votre sĂ©lecteur, vous faites alors rĂ©fĂ©rence au nom de l'animation de vos "images-clĂ©s" et vous indiquez Ă  ce sĂ©lecteur comment jouer l'animation.

Dans l'exemple suivant, nous voulons qu'un carré soit pulsé et que la couleur passe de "bleu royal" à "orange".

    /* On définit d'abord l'animation... */

@keyframes carrePulse {
0% { /* Début */
transform: scale(0.7); /* 70% de la taille d'origine */
background-color: royalblue;
}
100% { /* Fin */
transform: scale(1);
background-color: orange;
}
}
    
    /* ...alors l'animation est assignée. */

.square {
height: 5rem;
width: 5rem;
animation-name: carrePulse;
animation-duration: 1s;
animation-timing-function: ease-in-out;
animation-iteration-count: infinite;
animation-direction: alternate;
}
    <div class="square"></div>

La propriĂ©tĂ© "animation-timing-function: ease-in-out;" donne l'impression que le carrĂ© "respire", car l'animation joue Ă  des vitesses diffĂ©rentes. Une animation toujours stable pourrait ĂȘtre obtenue avec la valeur "linĂ©aire". GrĂące Ă  ces fonctions de chronomĂ©trage, vous pouvez donner aux animations un aspect rĂ©aliste. Dans les liens ci-dessous, vous trouverez des fiches de rĂ©fĂ©rence Ă  partir desquelles vous pouvez copier des valeurs pour vous familiariser avec les fonctions de temps.

Pour faire jouer l'animation à l'infini, il faut définir "animation-iteration-count: infinite;". Si vous voulez que l'animation ne soit jouée que 3 fois, alors écrivez animation-iteration-count: 3;.

Avec animation-direction: alternate, vous définissez que l'état final (100%) s'anime à nouveau pour revenir à l'état initial (0%). Sinon, l'animation reviendrait à l'état initial aprÚs avoir atteint l'état final. Dans notre exemple, le carré deviendrait soudainement plus petit et changerait de couleur.

🔗 Liens

Relever les défis

#20 CSS Animations (Ajouter une animation avec CSS qui ne s'arrĂȘte jamais et fonctionne indĂ©pendamment de l'interaction de l'utilisateur)

Mis Ă  jour