Ver Mensaje Individual
  #4 (permalink)  
Antiguo 13/05/2011, 09:43
Dany_s
 
Fecha de Ingreso: diciembre-2009
Ubicación: Misiones
Mensajes: 867
Antigüedad: 14 años, 5 meses
Puntos: 65
Respuesta: Efecto rollover en menu con Jquery?

yo hice esto si te sirve

lo que hace en la función mover es tomar el ancho del li, el ancho de div #efecto, restar los valores y dicidirlo por 2 asi obtengo los limites o lo que sobra a la izquierda y derecha del div #efecto, al sumarlo con la posición izquierda de un li sumo ese valor y queda posicionado en el centro del li

no se si se entiende :S

podes darle estilos a tu gusto y el div #efecto podes ponerle una imagen con fondo transparente o iluminado


Código Javascript:
Ver original
  1. <html>
  2.     <head>
  3.         <title>Ejemplo</title>
  4.         <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.5/jquery.min.js"></script>
  5.         <script>
  6.  
  7.             $( function(){
  8.                    
  9.                     lista = $('#menu li');
  10.  
  11.                     lista.mouseover( function(){
  12.                         mover($(this));
  13.                     }).click( function(){
  14.                         lista.removeClass('seleccionado');
  15.                         $(this).addClass('seleccionado');
  16.                     });
  17.                    
  18.                     $('#menu ul').mouseleave( function(){
  19.                         mover($('#menu li.seleccionado'));
  20.                     });
  21.  
  22.                     $('#menu li.seleccionado').trigger('mouseover');
  23.  
  24.                     function mover(li){
  25.                         var tamanoLi = li.outerWidth();
  26.                         var tamanoEfecto = $('#efecto').outerWidth();
  27.                         var sobrante = (tamanoLi - tamanoEfecto) / 2;
  28.                         var posLeft = li.offset().left;
  29.                         var mover = posLeft + sobrante;
  30.                         $('#efecto').stop().animate({'left':mover}, 500);
  31.                     }
  32.  
  33.             });
  34.  
  35.  
  36.  
  37.     </script>
  38.  
  39.     <style>
  40.  
  41.     body {
  42.         margin:50px
  43.     }
  44.  
  45.     #menu{
  46.         background:#ccc;
  47.         height:50px;
  48.         width:500px;
  49.     }
  50.  
  51.     #menu ul {
  52.         list-style:none;
  53.         margin:0;
  54.         padding:0;
  55.     }
  56.  
  57.     #menu li {
  58.         float:left;
  59.         padding:10px;
  60.         width:100px;
  61.         text-align:center;
  62.         position:relative;
  63.         cursor:pointer;
  64.     }
  65.  
  66.     #efecto {
  67.         position:absolute;
  68.         width:50px;
  69.         height:50px;
  70.     }
  71.  
  72.     #menu .seleccionado{
  73.         font-weight:600
  74.     }
  75.  
  76.     </style>
  77.  
  78. </head>
  79. <body>
  80.  
  81.     <div id="menu">
  82.         <div id="efecto">
  83.             <img src="http://www.gloriacalero.com/wp-content/uploads/2010/07/button-9458.png" />
  84.         </div>
  85.         <ul>
  86.             <li class="seleccionado">Uno</li>
  87.             <li>Dos</li>
  88.             <li>Tres</li>
  89.             <li>Cuatro</li>
  90.         </ul>
  91.     </div>
  92.  
  93. </body>
  94. </html>