jQuery logoUn efecto que me habí­a gustado bastante era el que hací­an algunas listas con ajax que cuando eliminaban un item lo hací­an caer mientras se desvanecí­a en la caí­da, al igual que, al contrario, si cargaban un nuevo item parecí­a caer desde la parte de arriba de la web materializándose en la parte de arriba de una lista. Continuando con la lectura de jQuery que estoy haciendo esta semana he visto que es realmente fácil hacer este efecto ya que solo hay que mezclar un par de efectos de aplicación y fadeOn/fadeOut para hacer que un div o un objeto cualquiera aparezca. Os dejo como siempre el ejemplo diseccionado.

Codigo que carga la librerí­a jQuery y las funciones aparecer() y desaparecer():

HTML:
  1. <script src="http://gsgd.co.uk/sandbox/jquery/jquery-1.2.1.js" type="text/javascript"></script>
  2. <script type="text/javascript">
  3.     function desaparecer(objeto, caida){
  4.         $(objeto).animate({
  5.             opacity: 0.0,
  6.             marginTop: caida,
  7.         }, 500 ).hide("slow");
  8.     }
  9.    
  10.     function aparecer(objeto, caida){
  11.         $(objeto)
  12.             .animate({
  13.                 opacity: '0.0',
  14.                 marginTop: "-"+caida,
  15.             }, 10 ).show()
  16.             .animate({
  17.                 opacity: '1.0',
  18.                 marginTop: "0",
  19.             }, 1000 );
  20.     }
  21. </script>

Un pequeño CSS de ejemplo que da las opciones al div que vamos a hacer aparecer y desaparecer y de paso centra la web entera para que no fallen los porcentajes:

CSS:
  1. html, body {
  2.         height:100%
  3.         width:100%;
  4.         margin:0px;
  5.         padding:0px;
  6.     }
  7.     #mensaje {
  8.         width:20%;
  9.     }

El codigo continente en el body, ejecutamos las funciones con 2 parametros. El primero es el id del objeto en cuenstion, en nuestro caso #mensaje y el segundo será la distancia a la que caerá o la distancia desde la que caerá. Si introducimos un numero simplemente se tomara como distancia en px, pero se pueden introducir también porcentajes:

HTML:
  1. <a href="#" onClick="javascript:desaparecer('#mensaje', '10%'); return false;">Desaparecer</a><br>
  2. <a href="#" onClick="javascript:aparecer('#mensaje', '10%'); return false;">Aparecer</a><br>
  3.     <div VALIGN="top" id="mensaje">
  4.         <img src="http://www.tierra0.com/wp-content/themes/satori/images/encabezado.gif" style="width:100px; height:30px;">
  5.     </div>

Ejemplo completo:

HTML:
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3.     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  4.     <title>ejemplo desaparecer/aparecer</title>
  5.     <style type="text/css">
  6.         html, body {
  7.             height:100%
  8.             width:100%;
  9.             margin:0px;
  10.             padding:0px;
  11.         }
  12.         #mensaje {
  13.             width:20%;
  14.         }
  15.     </style>
  16.     <script src="http://gsgd.co.uk/sandbox/jquery/jquery-1.2.1.js" type="text/javascript"></script>
  17.     <script type="text/javascript">
  18.         function desaparecer(objeto, caida){
  19.             $(objeto).animate({
  20.                 opacity: 0.0,
  21.                 marginTop: caida,
  22.             }, 500 ).hide("slow");
  23.         }
  24.        
  25.         function aparecer(objeto, caida){
  26.             $(objeto)
  27.                 .animate({
  28.                     opacity: '0.0',
  29.                     marginTop: "-"+caida,
  30.                 }, 10 ).show()
  31.                 .animate({
  32.                     opacity: '1.0',
  33.                     marginTop: "0",
  34.                 }, 1000 );
  35.         }
  36.     </script>
  37. </head>
  38.         <a href="#" onClick="javascript:desaparecer('#mensaje', '10%'); return false;">Desaparecer</a><br>
  39.         <a href="#" onClick="javascript:aparecer('#mensaje', '10%'); return false;">Aparecer</a><br>
  40.     <div VALIGN="top" id="mensaje">
  41.             <img src="http://www.tierra0.com/wp-content/themes/satori/images/encabezado.gif" style="width:100px; height:30px;">
  42.     </div>
  43. </body>
  44. </html>