formateur informatique

Effets d'animation en Javascript et JQuery

Accueil  >  Technique  >  Javascript  >  Javascript Astuces  >  Effets d'animation en Javascript et JQuery
Livres à télécharger


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


Inscription Newsletter    Inscription Newsletter
Sujets que vous pourriez aussi aimer :


Effets d'animation - Javascript - JQuery

Lors des précédentes astuces, nous avons pris l'habitude de faire appel aux librairies JQuery pour produire des effets remarquables. Avec cette nouvelle astuce Javascript, nous récidivons. Il est maintenant question de déclencher des effets d'animation sur des éléments Html de la page Web.

Animations sur des objets Html en Javascript grâce à des librairies JQuery

Sur l'exemple illustré par la capture, un contenu textuel est embarqué dans un calque. L'internaute choisit un effet d'animation avec une liste déroulante, puis il clique sur un bouton pour l'appliquer au calque. Et aussitôt, la transformation s'opère selon les réglages commis par la méthode choisie, issue des librairies JQuery.



Sources de travail
Pour la démonstration de cette nouvelle astuce Javascript, nous proposons d'appuyer l'étude sur une page Web déjà bien amorcée et offrant cette liste déroulante d'effets d'animation à appliquer. La décompression fournit le fichier de la page Web : index.htm. Ses ressources l'accompagnent dans les sous dossiers dont les feuilles de styles dans le sous dossier Css et les librairies JQuery dans le sous dossier Js.
  • Double cliquer sur le fichier index.htm pour l'ouvrir dans le navigateur Web par défaut,
Le descriptif est bien présent dans son calque et une liste déroulante permet de choisir l'un des effets à lui appliquer.
  • Choisir un effet d'animation avec la liste déroulante,
  • Puis, cliquer sur le bouton Tester l'effet,
Bien entendu et comme vous pouvez le constater, rien ne se produit encore à ce stade. Nous devons établir la liaison entre ces effets et ce calque.
  • A la racine du dossier de décompression, cliquer droit sur le fichier index.htm,
  • Dans le menu contextuel, choisir de l'ouvrir avec un éditeur comme le Notepad ++,
Nous accédons ainsi à la structure Html de la page Web. Les feuilles de styles et les librairiesJQuery sont référencées dans la section Head, donc en entête de code :

...
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="css/mes-styles.css">
<link rel="stylesheet" href="css/les-styles.css">
<script src="js/jquery-1.12.4.js"></script>
<script src="js/jquery-ui.js"></script>

</head>
...


Le calque à animer et la liste déroulante des effets à appliquer sont imbriqués dans un calque d'identifiant auCentre, plus bas dans le code Html :

...
<div id="auCentre">
<div class="outils">
<select id="effetChoisi">
<option value="blind">Blind</option>
<option value="bounce">Bounce</option>
<option value="clip">Clip</option>
<option value="drop">Drop</option>
<option value="explode">Explode</option>
<option value="fade">Fade</option>
<option value="fold">Fold</option>
<option value="highlight">Highlight</option>
<option value="puff">Puff</option>
<option value="pulsate">Pulsate</option>
<option value="scale">Scale</option>
<option value="shake">Shake</option>
<option value="size">Size</option>
<option value="slide">Slide</option>
</select>
<button id="bouton" class="btnMenu" onclick="jouerEffet();">Tester l'effet</button>
</div>
<div class="leCalque">
<div id="effet" class="leContenu arrondi">
<h3 class="entete arrondi">Qu'est-ce que le Javascript?</h3>
<p>
Le <strong>code Javascript</strong> est ce que l'on appelle un<strong>code client</strong>.   ... le nombre d'internautes en cours de navigation...
</p>
</div>
</div>
</div>
...


Ces différents éléments Html sont régis par des styles (attribut class) on ne peut plus classiques. Ils sont hébergés par la feuille de styles les-styles.css stockée dans le sous dossier Css. Quelques remarques sont néanmoins importantes. L'identifiant de la liste déroulante est effetChoisi. C'est par ce nom d'objet que le code Javascript doit récupérer l'effet sélectionné afin de le transmettre au JQuery pour déterminer la transformation à appliquer sur le calque cible. Et l'identifiant de ce calque de texte est effet. Ces noms d'effets doivent être appliqués au clic sur le bouton (balise button). Et comme vous pouvez le voir, ce dernier appelle la fonction jouerEffet au clic (onclick="jouerEffet();"). Cette fonction existe déjà dans la section de script, en bas de la page Html :

<script type="text/javascript" language="javascript">
function jouerEffet()
{

};

</script>


Mais naturellement, elle est vide pour l'instant.



Récupérer le nom de l'effet
La première chose à faire est de récupérer le nom de l'effet choisi par le code Javascript. Ainsi, nous pourrons le transmettre au JQuery pour l'appliquer au calque du texte en tant que paramètre d'une méthode. Et comme vous le savez, c'est la méthode getElementById de l'objet Javascript document qui permet de pointer sur un élément Html reconnu par son identifiant.
  • Dans les bornes de la fonction, ajouter l'instruction Javascript suivante :
...
var lEffet = document.getElementById("effetChoisi").value;
...


Une fois le calque pointé par la méthode getElementById, c'est la propriété value qui permet d'accéder à son contenu, soit au choix réalisé par l'utilisateur par le biais de la liste déroulante. C'est ainsi que le nom de l'effet à appliquer est désormais stocké dans la variable lEffet.

Les options des animations
Avant d'être appliquées, certaines animations ont besoin de précisions. Il s'agit de paramètres à régler pour réaliser les transformations demandées. Seules deux animations sont concernées : scale et size. En d'autres termes, en l'absence de ces deux effets, nous allégerions sensiblement le code Javascript pour livrer une fonction triviale appliquant des effets saisissants.
  • A la suite du code de la fonction, ajouter les instructions suivantes :
...
var options = {};
if (lEffet == "scale")
{
options = { percent: 50 };
}
else if (lEffet == "size")
{
options = { to: { width: 370, height: 185 } };
}
...


Nous déclarons tout d'abord un tableau de paramètres (var options = {}) pour recevoir l'énumération des réglages à observer. Il est vide à l'origine et le restera pour la plupart des animations. S'il s'agit de l'effet scale (if (lEffet == "scale")), nous réglons simplement le pourcentage de l'échelle. Avec cette valeur (50%), nous allons réduire de moitié la taille du calque. S'il s'agit de l'effet size (else if (lEffet == "size")), nous réglons la largeur finale (width) ainsi que la hauteur finale (height). Certes, encore faut-il savoir paramétrer ces effets et c'est bien la vocation de ces formations.

Appliquer l'effet en JQuery
Maintenant que le nom de l'animation est connu et que les potentiels paramètres sont configurés, il ne nous reste plus qu'à jouer l'effet. Et pour cela, il suffit d'appliquer la méthode JQuery effect sur l'élément Html du texte, celui qui porte l'identifiant effet. Et comme vous le savez grâce aux astuces précédentes, en JQuery c'est l'alias du dollar ($) qui permet de prendre possession d'un élément Html pour le piloter.
  • A la suite du code Javascript, ajouter l'instruction suivante :
...
$("#effet").effect(lEffet, options, 1500, retour);
...


Cette méthode requiert quatre paramètres. Cela aussi, il faut le savoir. En premier argument, nous lui passons le nom de l'animation. Le deuxième argument reçoit le tableau des paramètres. La durée est transmise en troisième argument. Enfin, une fonction qui n'existe pas encore est passée en quatrième et dernier argument. Son utilité sautera aux yeux après avoir effectué quelques essais.

Avant de réaliser quelques tests, la fonction appelée doit être créée à défaut d'être implémentée tout de suite. En son absence, le code Javascript génèrerait une erreur stoppant immédiatement l'exécution du code.
  • Après la fonction jouerEffet, créer la fonction retour, comme suit :
function retour()
{

}
  • Enregistrer les modifications (CTRL + S) et revenir sur la page Web (ALT + Tab),
  • Rafraîchir le navigateur avec la touche F5 du clavier,
  • Choisir une animation avec la liste déroulante,
  • Puis, cliquer sur le bouton Tester l'effet,
Comme vous pouvez le constater l'animation choisie se joue à la perfection. Et cette remarque est vraie quel que soit l'effet sélectionné. Cependant et cela ne vous a pas échappé, le calque du texte reste figé dans sa transformation finale à l'issue de l'animation. Or, nous souhaiterions qu'il recouvre son aspect d'origine pour appliquer d'autres transformations dans la foulée. Et c'est toute l'utilité à laquelle doit répondre la fonction retour que nous avons créée.

Position non réinitialisée après animation Javascript JQuery



Supprimer le style de fin
Pour corriger cette anomalie, l'astuce est simple. Il suffit de supprimer les attributs de style donnés au calque et engendrés par l'application de l'effet JQuery. C'est ainsi que le calque recouvrera son aspect originel et que d'autres animations pourront lui être appliquées dans la foulée.
  • Revenir dans le code de la page Html,
  • Dans les bornes de la fonction retour, ajouter les instructions suivantes :
...
setTimeout(function()
{
$("#effet").removeAttr( "style" );
}, 1000 );
...


Tout d'abord, nous exploitons la fonction setTimeout que nous avions découverte à l'occasion d'une formation Javascript pour créer un diaporama automatisé de photos. Elle permet de déclencher les actions de la fonction qui lui est passée en premier paramètre en observant un délai de démarrage, dont l'indication numérique lui est passée en second paramètre. Dès lors, c'est la méthode JQuery removeAttr qui permet de supprimer les attributs de style passés par l'effet d'animation.
  • Enregistrer les modifications (CTRL + S),
  • Revenir sur la page Web (ALT +Tab),
  • Rafraîchir la page (F5),
  • Choisir une animation avec la liste déroulante,
  • Puis, cliquer sur le bouton Tester l'effet,
Cette fois et comme vous pouvez l'apprécier, après sa transformation et selon le délai défini par la fonction setTimeout, le calque de texte retrouve bien son aspect d'origine.

Animations sur des calques Html en Javascript et JQuery

 
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