Ver Mensaje Individual
  #1 (permalink)  
Antiguo 14/06/2010, 10:42
bambuweb
 
Fecha de Ingreso: junio-2009
Mensajes: 85
Antigüedad: 14 años, 10 meses
Puntos: 1
2 problemas en menu con mootools

Buenas a todos, tengo un problema y espero que puedan echarme un poco de luz acá.

Estoy armando un menu que tiene un efecto de opacidad, hecho con mootools. El problema es un tanto dificil de explicar, pero es mas o menos asi:

Es un menú vertical, y cuando paso el mouse de abajo hacia arriba pasando por los diferentes items del menu, la animacion de opacidad funciona perfecto. Pero si el movimiento del mouse es de arriba hacia abajo, la animación aparece un tanto trabada, ejecutandose cuando voy por la mitad del item recién, y no se por qué pasa esto. Les dejo el código HTML, CSS y Javascript a ver si alguien sabe por qué pasa esto, y también dejo un enlace con el ejemplo del menú que estoy armando.

El segundo problema, es más una consulta. Soy novato en Javascript y mootools, y lo que quiero hacer es optimizar el código que utilizo para esta animación, ya que en estos momentos estoy utilizando una función por cada botón (pueden ver el código debajo).

Código HTML:
Ver original
  1. <link href="estilos.css" rel="stylesheet" type="text/css" />
  2. <script type="text/javascript" src="mootools-1.2.4-core-nc.js"></script>
  3. <script type="text/javascript" src="mootools-1.2-more.js"></script>
  4. <script type="text/javascript" src="menu.js"></script>
  5. <script type="text/javascript">
  6. window.addEvent('domready', function(){
  7.     $('drop_down_menu').getElements('li.menu').each( function( elem ){
  8.         var list = elem.getElement('ul.links');
  9.         var myFx = new Fx.Slide(list).hide();
  10.         elem.addEvents({
  11.             'mouseenter' : function(){
  12.                 myFx.cancel();
  13.                 myFx.slideIn();
  14.             },
  15.             'mouseleave' : function(){
  16.                 myFx.cancel();
  17.                 myFx.slideOut();
  18.             }
  19.         });
  20.     })
  21. });
  22. </head>
  23.  
  24. <div id="navegacion">
  25. <div id="linkbotn1"><a href="#" class="linkbotn1"><img src="images/inicio-bot-h.png" alt="" width="121" height="36" border="0" class="imgbotn1" /></a></div>
  26. <div id="linkbotn2"> <ul id="drop_down_menu">
  27.         <li class="menu"><a href="#" class="linkbotn2"><img src="images/empresa-bot-h.png" alt="" width="121" height="36" border="0" class="imgbotn2" /></a>
  28.         <ul class="links">
  29.                 <li><a href="#"><img src="images/quiensoy-bot-h.png" alt="" width="121" height="36" border="0" /></a></li>
  30.                 <li><a href="#">Link 2</a></li>
  31.             </ul>
  32.         </li>
  33.      </ul></div>
  34. <div id="linkbotn3"><a href="#" class="linkbotn3"><img src="images/clientes-bot-h.png" alt="" width="121" height="36" border="0" class="imgbotn3" /></a></div>
  35. <div id="linkbotn4"><a href="#" class="linkbotn4"><img src="images/servicios-bot-h.png" alt="" width="121" height="36" border="0" class="imgbotn4" /></a></div>
  36. <div id="linkbotn5"><a href="#" class="linkbotn5"><img src="images/grafica-bot-h.png" alt="" width="121" height="36" border="0" class="imgbotn5" /></a></div>
  37. <div id="linkbotn6"><a href="#" class="linkbotn6"><img src="images/contacto-bot-h.png" alt="" width="121" height="36" border="0" class="imgbotn6" /></a></div>
  38. <div id="linkbotn7"><a href="#" class="linkbotn7"><img src="images/enlaces-bot-h.png" alt="" width="121" height="36" border="0" class="imgbotn7" /></a></div>
  39. </div>
  40.  
  41. </body>



Código CSS:
Ver original
  1. ul {
  2.     margin:0;
  3.     padding:0;
  4. }
  5. li {
  6.     margin:0;
  7.     padding:0;
  8.     list-style-type:none;
  9. }
  10. li ul {
  11.     margin:0;
  12.     padding:0;
  13.     list-style-type:none;
  14. }
  15. #linkbotn1 {
  16.     background-image:url(images/inicio-bot.png);
  17.     background-repeat:no-repeat;
  18. }
  19. #linkbotn2 {
  20.     background-image:url(images/empresa-bot.png);
  21.     background-repeat:no-repeat;
  22. }
  23. #linkbotn3 {
  24.     background-image:url(images/clientes-bot.png);
  25.     background-repeat:no-repeat;
  26. }
  27. #linkbotn4 {
  28.     background-image:url(images/servicios-bot.png);
  29.     background-repeat:no-repeat;
  30. }
  31. #linkbotn5 {
  32.     background-image:url(images/grafica-bot.png);
  33.     background-repeat:no-repeat;
  34. }
  35. #linkbotn6 {
  36.     background-image:url(images/contacto-bot.png);
  37.     background-repeat:no-repeat;
  38. }
  39. #linkbotn7 {
  40.     background-image:url(images/enlaces-bot.png);
  41.     background-repeat:no-repeat;
  42. }



Código Javascript:
Ver original
  1. window.addEvent('domready', function(){
  2. $$('.imgbotn1,.imgbotn2,.imgbotn3,.imgbotn4,.imgbotn5,.imgbotn6,.imgbotn7').setStyle('opacity', 0);
  3. $$('.linkbotn1').addEvent('mouseenter', function(){
  4. var large = $$('.imgbotn1');
  5. large.fade((large.get('opacity') == 1) ? 0 : 1);
  6. });
  7. $$('.linkbotn1').addEvent('mouseleave', function(){
  8. var large = $$('.imgbotn1');
  9. large.fade((large.get('opacity') == 0) ? 1 : 0);
  10. });
  11. $$('.linkbotn2').addEvent('mouseenter', function(){
  12. var large = $$('.imgbotn2');
  13. large.fade((large.get('opacity') == 1) ? 0 : 1);
  14. });
  15. $$('.linkbotn2').addEvent('mouseleave', function(){
  16. var large = $$('.imgbotn2');
  17. large.fade((large.get('opacity') == 0) ? 1 : 0);
  18. });
  19. $$('.linkbotn3').addEvent('mouseenter', function(){
  20. var large = $$('.imgbotn3');
  21. large.fade((large.get('opacity') == 1) ? 0 : 1);
  22. });
  23. $$('.linkbotn3').addEvent('mouseleave', function(){
  24. var large = $$('.imgbotn3');
  25. large.fade((large.get('opacity') == 0) ? 1 : 0);
  26. });
  27. $$('.linkbotn4').addEvent('mouseenter', function(){
  28. var large = $$('.imgbotn4');
  29. large.fade((large.get('opacity') == 1) ? 0 : 1);
  30. });
  31. $$('.linkbotn4').addEvent('mouseleave', function(){
  32. var large = $$('.imgbotn4');
  33. large.fade((large.get('opacity') == 0) ? 1 : 0);
  34. });
  35. $$('.linkbotn5').addEvent('mouseenter', function(){
  36. var large = $$('.imgbotn5');
  37. large.fade((large.get('opacity') == 1) ? 0 : 1);
  38. });
  39. $$('.linkbotn5').addEvent('mouseleave', function(){
  40. var large = $$('.imgbotn5');
  41. large.fade((large.get('opacity') == 0) ? 1 : 0);
  42. });
  43. $$('.linkbotn6').addEvent('mouseenter', function(){
  44. var large = $$('.imgbotn6');
  45. large.fade((large.get('opacity') == 1) ? 0 : 1);
  46. });
  47. $$('.linkbotn6').addEvent('mouseleave', function(){
  48. var large = $$('.imgbotn6');
  49. large.fade((large.get('opacity') == 0) ? 1 : 0);
  50. });
  51. $$('.linkbotn7').addEvent('mouseenter', function(){
  52. var large = $$('.imgbotn7');
  53. large.fade((large.get('opacity') == 1) ? 0 : 1);
  54. });
  55. $$('.linkbotn7').addEvent('mouseleave', function(){
  56. var large = $$('.imgbotn7');
  57. large.fade((large.get('opacity') == 0) ? 1 : 0);
  58. });
  59. });



Y aca les dejo el resultado de esto:
http://pruebas-demos.com.ar/menu/menu.html

De antemano les agradezco a todos y espero sus respuestas!