Mootools avec Joomla - Menu Morphing

Voici un tutoriel mootools pour vous initier aux possibilités de ce fabuleux outil.

Ici on va créer un menu sur lequel on ajoute quelques lignes de javascript qui vont nous permettre d'appeler mootools...Pour cela il nous faut travailler avec plusieurs fichiers.

 

Index.php

Pour faire fonctionner notre scipt, il faut l'appeler à partir du fichier de base du template. Juste avant la balise , insérer le code suivant :

  1. <!-- MORPHING MENU-->
  2. <link rel="stylesheet" href="/templates//css/morphingmenu.css" type="text/css" />
  3. <script type="text/javascript" src="/templates//js/morphingmenu.js"></script>
  4. <!-- FIN MORPHING MENU -->
Il faut créer un répertoire "css" et un répertoire "js" dans votre template s'ils n'existent pas. On va donc appeler un fichier CSS qui définit les styles du menu, et un fichier Javascript qui va créer nos effets.

Morphingmenu.css

  1. a.mainlevel_horizdemo {
  2. color: #101010;
  3. background: transparent;
  4. padding-left:30px;
  5. }
  6.  
  7. ul#mainlevel_horizdemo li {
  8. background:#303030;
  9. }

Morphingmenu.js

Et maintenant on attaque le gros du morceau. J'ai récupéré le code sur le site de mootools.net pour ne pas avoir à tout inventer !

On ne va pas tout regarder ensemble, mais juste la partie qui nous intéresse. Pour agir sur le menu créé auparavant, on doit

- définir sur quel élément on doit agir

- faire en sorte qu'on le fasse sur tous les objets identiques de la page, et non pas seulement sur le premier

- créer l'événement

Notre code ressemble à ça :
  1. window.addEvent('domready', function(){
  2. var list = $$('#mainlevel_horizdemo li');
  3. list.each(function(element) {
  4. var fx = new Fx.Styles(element, {duration:0, wait:false});
  5. var fx2 = new Fx.Styles(element, {duration:1000, wait:false});
  6. element.addEvent('mouseenter', function(){
  7.  
  8. fx.start({
  9.  
  10.  
  11. 'margin-left': 30,
  12. 'background-color': '#555',
  13. 'color': '#ff8'
  14. });
  15. fx2.stop();
  16. });
  17.  
  18. element.addEvent('mouseleave', function(){
  19. fx2.start({
  20.  
  21.  
  22. 'margin-left': 0,
  23. 'background-color': '#303030',
  24. 'color': '#888'
  25. });
  26. });
  27. });
  28. });

Explications :

var list = $$('#mainlevel_horizdemo li'); 

définit l'élément sur lequel on va pointer et l'enregistrer dans la variable list

list.each(function(element) {}

nous permet de créer une boucle pour agir sur tous les éléments identiques de la page stockés dans la variable list

element.addEvent('mouseenter', function(){
fx.start({'margin-left': 30,
'background-color': '#555',
'color': '#ff8'});

crée l'événement Fx.Styles qui aura pour but d'arriver aux styles définis

Paramètres du menu

capture_menumorphing1capture_menumorphing2

 

Source : http://demos111.mootools.net/Fx.Styles

Please publish modules in offcanvas position.