formateur informatique

Jouer une animation CSS au clic de la souris

Accueil  >  Technique  >  CSS  >  CSS Astuces  >  Jouer une animation CSS au clic de la souris
Livres à télécharger


Pour partager cette vidéo sur les réseaux sociaux ou sur un site, voici son url :


    Inscription Newsletter
Sujets que vous pourriez aussi aimer :


Jouer une animation au clic de la souris

Avec l'astuce CSS précédente, nous avons appris à créer et à gérer des effets de transition. Mais ceux-ci se déclenchaient automatiquement avec le chargement de la page Web.

Animation sur une forme au clic de la souris avec les styles Css et le code Javascript

Dans l'exemple illustré par la capture, au clic de la souris sur une forme géométrique carrée, nous enclenchons une animation diagonale sur une hauteur et sur une largeur de 100 pixels. Et pour cela nous le verrons, quelques légères instructions Javascript sont nécessaires.



Fichiers sources
Pour réaliser ces démonstrations, nous avons besoin de récupérer quelques fichiers qui offrent déjà la structure de la page Web. Comme vous le remarquez, la décompression livre le fichier de la page Web accompagné de trois sous dossiers.
  • Double cliquer sur ce fichier index.htm pour l'ouvrir dans le navigateur défini par défaut,
Le carré est bien présent en haut à gauche de la page. Si vous pointez dessus, le curseur de la souris se transforme pour prendre l'apparence conventionnelle d'une main. Mais bien sûr à ce stade, si vous cliquez dessus, rien ne se produit encore.
  • A la racine du dossier de décompression, cliquer droit sur le fichier index.htm,
  • Dans le menu contextuel qui s'invite, choisir de l'ouvrir avec un éditeur comme le Notepad++,
Dans l'entête du code, section head, vous notez la présence des déclaratives aux fichiers CSS.

<link rel='stylesheet' href='css/mes-styles.css'>
<link rel='stylesheet' href='css/les-styles.css'>


Le fichier mes-styles est celui utilisé pour structurer cette page Web. Pour plus de clarté, nous travaillerons les animations dans un fichier épuré nommé les-styles.
  • A la racine du dossier de décompression, double cliquer sur le dossier Css pour l'ouvrir,
  • Dès lors, cliquer droit sur le fichier les-styles.css,
  • Dans le menu contextuel, choisir de l'ouvrir avec un éditeur comme le Notepad++,
Deux styles Css existent déjà. Le premier nommé desc est préfixé du symbole du dièse (#) car il fait référence à un élément unique dans la page Html. Il s'agit du calque (div) hébergeant tout le texte descriptif. Il est situé juste sous le carré à animer. Et précisément, le second style est nommé boite. Dans la page Html, c'est par l'attribut class et non plus id qu'il est appliqué au calque du carré.

<div class='boite'>Calque<br />CSS</div>

Et c'est ce style qui lui confère ces attributs de mise en forme.

.boite
{
margin:10px;
width:100px;
height:100px;
color:#edeeee;
font-size:20px;
padding:20px;
background:#2b579a;

cursor:pointer;
box-shadow:0 10px 20px rgba(0,0,0,0.5);
}


Il s'agit de quelques réglages de positionnements, de dimensions mais aussi de police et de couleurs. C'est l'attribut cursor réglé sur la valeur pointer qui transforme l'aspect du pointeur de la souris au survol sur le carré. Enfin, c'est l'attribut box-shadow qui crée l'effet d'ombre portée. Les décalages à l'horizontale et à la verticale ainsi que les angles de décalage sont définis. Puis, les composantes de la couleur de l'ombre sont renseignées.



Initialisation de l'animation
Puisque la structure est déjà conçue et régie par les styles Css, nous devons désormais nous contenter de définir les réglages permettant d'initier l'animation à déclencher au clic. Et bien sûr, ces attributs doivent être paramétrés dans le style boite associé au calque à animer.
  • A la fin du style boite, ajouter les deux lignes Css suivantes :
...
cursor:pointer;
box-shadow:0 10px 20px rgba(0,0,0,0.5);

transform:translate(0, 0);
transition:transform 500ms;

}


L'attribut transform annonce l'animation à régler. La fonction translate permet d'initier le déplacement. Avec les deux coordonnées à zéro, la position d'origine du carré reste telle qu'elle est définie dans la structure de la page. Avec l'attribut transition, nous définissons le laps de temps durant lequel le déplacement doit être opéré. Il est ainsi réglé à 500 ms (transform 500ms), soit une demi-seconde. C'est ainsi dans la syntaxe des styles Css.

Maintenant, nous devons définir l'état d'arrivée, soit la position du carré à la fin de l'animation. Pour cela, nous devons créer un style dérivé du style boite. De cette manière les deux styles seront bien liés, donc associés au calque à animer. Et ce second style pourra être appelé par le code Javascript au clic pour déverser ses réglages sur le calque en question.
  • En dessous du style boite, créer le style boite.bouger, comme suit :
.boite.bouger
{

}


Le nom du style à la racine est bien le même (boite). C'est ainsi que l'association est établie. Le terme en suffixe est arbitraire quant à lui. Il convient cependant de le rendre explicite.
  • Entre les deux accolades, ajouter désormais l'instruction Css suivante :
.boite.bouger
{
transform:translate(100px, 100px);
}


Nous indiquons que la position finale de l'effet de translation se termine à 100 px en abscisse comme en ordonnée. De fait, nous allons générer un déplacement en diagonale.
  • Enregistrer les modifications (CTRL + S),
Bien sûr à ce stade, si vous rafraîchissez la page Web (CTRL + F5) et que vous cliquez sur le carré, rien ne se produit. Il manque tout simplement le déclencheur Javascript pour associer ce second style au premier dans le calque de la boite.



Déclencher l'animation au clic
Le déclencheur dont nous avons besoin consiste en un gestionnaire d'événements que nous devons initialiser. Son rôle est 'd'écouter' les actions de l'utilisateur sur la page et plus précisément sur le calque carré. Si un clic est détecté, alors l'association avec le style de fin doit être réalisée.
  • Revenir dans le code de la page index.html,
  • En bas de la page, entre les balises de script, ajouter le code suivant :
<script type='text/javascript' language='javascript'>
var laBoite = document.querySelector('.boite');
laBoite.addEventListener('click', function() {
laBoite.classList.toggle('bouger');
});

</script>


La méthode querySelector est utilisée pour appeler un élément par sa classe et non par son id. Désormais la variable laBoite représente le calque carré. Ensuite, le code JavaScript a besoin d'écouter les actions. C'est la raison pour laquelle nous exploitons la méthode addEventListener. Cette méthode déploie une fonction à appeler chaque fois que l'événement spécifié en premier paramètre est envoyé. Et cet événement est bien défini sur le clic (Click). Dès lors que le clic est constaté, nous basculons le style du calque sur le Css dérivé reconnu par son suffixe bouger. C'est ainsi que le carré va prendre sa position finale en respectant la durée de transition telle que nous l'avons définie.

C'est la propriété classList qui permet effectivement de faire référence à un style par son nom. La méthode toggle permet de faire la bascule. Au premier clic, le style dérivé est additionné. Au second, il est enlevé et ainsi de suite. Nous allons donc pouvoir réaliser des allers-retours sur la forme, par clics successifs.
  • Enregistrer les modifications (CTRL + S),
  • Basculer sur le navigateur Web et rafraîchir la page (CTRL + F5),
La touche CTRL est nécessaire pour actualiser le cache. Les styles Css sont en effet généralement mémorisés. Or, nous avons besoin de les régénérer au dernier indice pour jouer l'animation. Désormais, lorsque vous cliquez sur le carré, il se déplace jusqu'à la position définie dans le style Css en respectant le délai en millisecondes. D'ailleurs, vous pouvez influer sur l'animation en modifiant ces paramètres.

Animation au clic sur une forme Html grâce aux styles Css et à une fonction Javascript

Et lorsque vous cliquez à nouveau sur le carré, grâce à la propriété toggle, il fait le chemin inverse, toujours en respectant le délai. Nous avons donc abouti une deuxième astuce permettant de réaliser un effet d'animation avec simplicité et interactivité.

 
Sur Facebook
Sur Youtube
Les livres
Contact
Mentions légales



Abonnement à la chaîne Youtube
Partager la formation
Partager sur Facebook
Partager sur Twitter
Partager sur LinkedIn