Ver Mensaje Individual
  #6 (permalink)  
Antiguo 09/03/2012, 08:43
Avatar de Naahuel
Naahuel
 
Fecha de Ingreso: marzo-2011
Ubicación: localhost
Mensajes: 796
Antigüedad: 13 años, 1 mes
Puntos: 192
Respuesta: Botones con mouseover mouseout y onclick

Entiendo.

Bueno te puedo mostrar un ejemplo sencillo. Está hecho con jQuery porque hace que muchas tareas (como animar y quitar y agregar clases) sea muy sencillo de nuestra parte:

Código HTML:
Ver original
  1. <!doctype html>
  2.     <title></title>
  3.     <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
  4.     <script type="text/javascript">
  5.         $(function(){
  6.             //variables de configuración
  7.             var opacidad_inicial = 0.4;
  8.             var opacidad_final   = 1;
  9.             var clase_activo = 'boton-activo';
  10.             var clase_boton = 'boton';
  11.            
  12.            
  13.             //obtenemos los botones
  14.             var botones = $('.' + clase_boton);
  15.             //apliamos estilos iniciales
  16.             botones.css({
  17.                 opacity:opacidad_inicial
  18.             });
  19.             //animación al pasar el mouse
  20.             botones
  21.                 .mouseenter(function(){
  22.                     $(this).not('.' + clase_activo).stop().animate({
  23.                         //incluir estilos
  24.                         opacity:opacidad_final
  25.                     });
  26.                 })
  27.                 .mouseleave(function(){
  28.                     $(this).not('.' + clase_activo).stop().animate({
  29.                         //incluir estilos
  30.                         opacity:opacidad_inicial
  31.                     });
  32.                 });
  33.             //agregar clase activa si se hace click
  34.             botones.click(function(){
  35.                 botones.not(this).removeClass(clase_activo).trigger('mouseleave');
  36.                 $(this).addClass(clase_activo)
  37.             });
  38.         });
  39.     </script>
  40.     <style type="text/css">
  41.     <!--
  42.         .boton{
  43.             /* Estilos comunes para TODOS los botones */
  44.             display:block;
  45.             float:left;
  46.             width:200px;
  47.             height:200px;
  48.             text-indent:-3333px; /*ocultar el texto*/
  49.         }
  50.         /* Estilos para cada boton*/
  51.         #boton-axe{ background:url(http://www.thescentfactoryonline.com/yahoo_site_admin/assets/images/axe_unlimited.68181717.jpg); }
  52.         #boton-rexona{ background:url(http://www.informabtl.com/wp-content/uploads/2011/07/Imagen-REXONA-FINAL1.jpg); }
  53.         #boton-rexona-cd{ background:url(http://babyccinoblog.com/wp-content/uploads/2008/04/rexona2.jpg); }
  54.         /* estilos para el boton activo */
  55.         .boton-activo{
  56.            
  57.         }
  58.     -->
  59.     </style>
  60. </head>
  61.     <!-- el boton es un link con el texto axe unlimited, el cual ocultamos y ponemos una imagen -->
  62.     <a class="boton" id="boton-axe" href="#">Axe Unlimited</a> 
  63.     <a class="boton" id="boton-rexona" href="#">Rexona Men</a>
  64.     <a class="boton" id="boton-rexona-cd" href="#">Rexona Cotton dry</a>
  65. </body>
  66. </html>

Lai dea es tener un enmarcado válido, fijate que el HTML es sencillo y correcto (excepto que los links no llevan a ningún lado, pero deberían).

Cada <a> tiene una clase (boton) y un id que lo identifica como único para poder asignarle la imagen con CSS.

Respecto al script, hace lo siguiente:
  1. Obtiene algunas variables que vos configurarías, como ser opacidad, clases, etc. La clase para la variable clase_activo es la que definiría los estilos e identificaría cual botón es el activo ahora.
  2. Aplica el estilo inicial que tendrían todos los botones
  3. Asigna un evento para que al pasar el mouse, se aplica una opacidad y al sacarlo se aplique otra.
  4. Asigna una función al evento 'click', que lo que hace es quitarle la clase activa a todos los botones menos al que se le hizo click y disparar el evento 'mouseleave' para que se realice la animación (Hacé la prueba, hacé click en un botón y después en otro. Vas a ver que el primer botón pierde la opacidad con una animación, como si sacaras el mouse de él).
  5. Luego le asigna la clase activa al botón que clickeaste.

Entonces la idea es esa. Basate en ese script para hacer lo tuyo, tal vez no varíe demasiado.

Usá los métodos addClass() y removeClass() para agregar y quitar clases, las cuales tendrían estilos asignados en el CSS

Espero se entienda :P
__________________
nahueljose.com.ar