Foros del Web » Programando para Internet » Jquery »

animate() de Jquery

Estas en el tema de animate() de Jquery en el foro de Jquery en Foros del Web. Saludos, He realizado mi primera animación en jQuery. Este es el código que he programado, y lo tengo en el archivo "functions.js" (por si miráis ...
  #1 (permalink)  
Antiguo 10/03/2010, 21:13
 
Fecha de Ingreso: octubre-2008
Mensajes: 93
Antigüedad: 15 años, 6 meses
Puntos: 1
animate() de Jquery

Saludos,

He realizado mi primera animación en jQuery.

Este es el código que he programado, y lo tengo en el archivo "functions.js" (por si miráis el HTML):

Código Javascript:
Ver original
  1. $(document).ready(inicio);
  2.        
  3.  
  4.                
  5.         function inicio(){
  6.             $("#boton1,#boton2,#boton3,#boton4,#boton5,#boton6").hover(funcion1,funcion2);
  7.         }
  8.        
  9.         function funcion1(){
  10.             $(this).animate(
  11.             {height:"+=50px"},
  12.             500
  13.             );
  14.            
  15.             $(this).css("background-color","eee");
  16.         }
  17.        
  18.         function funcion2(){
  19.             $(this).css("background-color","ccc");
  20.            
  21.             $(this).animate(
  22.             {height:"-=50px"},
  23.             500
  24.             );
  25.         }

Y la página HTML, por si queréis echarle un ojo:

Código HTML:
Ver original
  1.     <head>
  2.         <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  3.         <title>New Web Project</title>
  4.     </head>
  5.    
  6.     <link href="css/style.css" rel="stylesheet" type="text/css" />
  7.    
  8.     <script src="js/jquery-1.4.2.min.js"></script>
  9.    
  10.     <script src="js/functions.js"></script>
  11.    
  12.    
  13.     <body>
  14.         <div id="contenedor">
  15.             <div id="boton1">Boton1</div>
  16.             <div id="boton2">Boton2</div>
  17.             <div id="boton3">Boton2</div>
  18.             <div id="boton4">Boton2</div>
  19.             <div id="boton5">Boton2</div>
  20.             <div id="boton6">Boton2</div>
  21.         </div>
  22.        
  23.     </body>
  24. </html>

Paso a paso...

Lo que hago es que cuando la página esté cargada cargue la función inicio.

Esta función "inicio" es un .hover que aplico a los 6 botones de la página.

La "funcion1" se aplica cuando el ratón está sobre un botón y la "función2" cuando el ratón ya no está encima.

Hasta aquí todo bien.

El problema es que los DIV me hacia abajo, y yo lo que quiero es que crezcan hacia arriba.

¿Alguna solución?

PD: Agradecería críticas hacia el código también, ya que al estar empezando no me gustaría pillar malas prácticas.

¡Muchas gracias!
  #2 (permalink)  
Antiguo 11/03/2010, 06:07
 
Fecha de Ingreso: diciembre-2009
Ubicación: Misiones
Mensajes: 867
Antigüedad: 14 años, 5 meses
Puntos: 65
Respuesta: animate() de Jquery

En realidad no es que el div crece para arriba o para abajo, lo que hace es cambiar el tamaño, para lograrla apariencia que buscas podes colocar un div que sea el botón abajo del div que crece.

El código está bien pero si usas animate sólo para cambiar el tamaño del div podés usar slideDown y slideUp
esto
$("#boton1,#boton2,#boton3,#boton4,#boton5,#boton6 ")
podés cambiar por
$(#contenedor>div)
imaginate si ya no queres que se llamen botonN sino botoncitoN tendrías que cambiar en cada uno de los selectores en jquery jeje que se yo si por ahi se da esa posibilidad

Código Javascript:
Ver original
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4.   <script src="http://code.jquery.com/jquery-latest.js"></script>
  5.   <script>
  6.     $(document).ready( function (){
  7.         $(".cont").slideUp(0);
  8.             $(".boton").click( function () {
  9.                 $('.activo').removeClass('activo').slideUp(500);
  10.                 $(this).parent().find('.cont').addClass('activo').slideDown(500);
  11.             });
  12.     });
  13.   </script>
  14.   <style>
  15.       .boton{background-color:red; }
  16.       .cont{background-color:blue; }
  17.   </style>
  18. </head>
  19. <body>
  20.     <div id="contenedor">
  21.  
  22.         <div class="bloque">
  23.             <div class="cont">11111<br />1111111<br />111111</div>
  24.             <div class="boton">Boton1</div>
  25.         </div>
  26.  
  27.         <div class="bloque">
  28.             <div class="cont">22222<br />222222<br />222222</div>
  29.             <div class="boton">Boton2</div>
  30.         </div>
  31.  
  32.         <div class="bloque">
  33.             <div class="cont">333333<br />333333<br />33333</div>
  34.             <div class="boton">Boton3</div>
  35.         </div>
  36.  
  37.         <div class="bloque">
  38.             <div class="cont">4444444<br />444444<br />44444</div>
  39.             <div class="boton">Boton4</div>
  40.         </div>
  41.  
  42.         <div class="bloque">
  43.             <div class="cont">5555<br />55555<br />5555555</div>
  44.             <div class="boton">Boton5</div>
  45.         </div>
  46.  
  47.         <div class="bloque">
  48.             <div class="cont">6666666<br />666666<br />66666666</div>
  49.             <div class="boton">Boton6</div>
  50.         </div>
  51.  
  52.     </div>
  53. </body>
  54. </html>

lo que hago es

primero cierro los div con clase cont
$(".cont").slideUp(0);

uso un evento click en los div con clase boton

busco div que tenga clase 'activo', elimino la clase 'activo' y lo cierro
$('.activo').removeClass('activo').slideUp(500);

del boton que se hizo click voy al padre y busco el div con clase 'cont' y le agrego la clase 'activo', por último lo abro
$(this).parent().find('.cont').addClass('activo'). slideDown(500);

y listo

Última edición por Dany_s; 11/03/2010 a las 06:13
  #3 (permalink)  
Antiguo 11/03/2010, 08:59
 
Fecha de Ingreso: octubre-2008
Mensajes: 93
Antigüedad: 15 años, 6 meses
Puntos: 1
Respuesta: animate() de Jquery

Muchas gracias Dany_s, siempre estás por aquí para resolver mis dudas. Muchas gracias, de veras.

El ejemplo que tu me propones: http://www.hectorgarrofe.com/jquery/animate.html

La verdad es que el tuyo tiene un código muy limpio, pero mi duda creo que es todavía más sencilla de responder. Fíjate bien en mi ejemplo: http://www.hectorgarrofe.com/jquery/index.html

Yo quiero que hagan exactamente lo mismo. Pero que cuando crezca el DIV, lo haga hacia arriba, no hacia abajo como en mi ejemplo. SOLO ESO.

Adjunto el css por si la moscas...

Código CSS:
Ver original
  1. body{
  2. text-align:center;
  3. }
  4.  
  5. #contenedor{
  6. margin: auto;
  7. margin-top: 100px;
  8. width: 900px;
  9. text-align:left;
  10. }
  11.  
  12. #boton1{
  13. color:#000;
  14. background-color:#ccc;
  15. width: 150px;
  16. height: 200px;
  17. float: left;
  18. cursor: pointer;
  19. }
  20.  
  21. #boton2{
  22. color:#000;
  23. background-color:#ccc;
  24. width: 150px;
  25. height: 200px;
  26. float:left;
  27. cursor: pointer;
  28. }
  29.  
  30. #boton3{
  31. color:#000;
  32. background-color:#ccc;
  33. width: 150px;
  34. height: 200px;
  35. float:left;
  36. cursor: pointer;
  37. }
  38.  
  39. #boton4{
  40. color:#000;
  41. background-color:#ccc;
  42. width: 150px;
  43. height: 200px;
  44. float:left;
  45. cursor: pointer;
  46. }
  47.  
  48. #boton5{
  49. color:#000;
  50. background-color:#ccc;
  51. width: 150px;
  52. height: 200px;
  53. float:left;
  54. cursor: pointer;
  55. }
  56.  
  57. #boton6{
  58. color:#000;
  59. background-color:#ccc;
  60. width: 150px;
  61. height: 200px;
  62. float:left;
  63. cursor: pointer;
  64. }

Etiquetas: Ninguno
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:48.