Foros del Web » Programando para Internet » Jquery »

Aparicion de elementos de forma escalonada

Estas en el tema de Aparicion de elementos de forma escalonada en el foro de Jquery en Foros del Web. Buenos días a todos! Quería preguntaros: Tengo una lista de la siguiente forma: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código HTML: Ver original < ul >   < li ...
  #1 (permalink)  
Antiguo 05/07/2013, 03:31
Avatar de madman_18  
Fecha de Ingreso: agosto-2010
Mensajes: 792
Antigüedad: 14 años, 3 meses
Puntos: 14
Pregunta Aparicion de elementos de forma escalonada

Buenos días a todos!

Quería preguntaros:

Tengo una lista de la siguiente forma:

Código HTML:
Ver original
  1. <ul>
  2.  <li>opcion 1</li>
  3.  <li>opcion 2</li>
  4.  <li>opcion 3</li>
  5.  <li>opcion 4</li>
  6. </ul>

Y me gustaría hacer de forma gradual (mostrar el 1, cuando acabe el 2, etc etc...) pero no consigo el efecto deseado siempre se me muestran todos de golpe.
La lista está con display:inline-block; si lo pongo el efecto de aparición por cada uno, me los pone uno debajo del otro.

Gracias por la ayuda!
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, te convertes en algo muy diferente"

Última edición por madman_18; 05/07/2013 a las 03:37
  #2 (permalink)  
Antiguo 05/07/2013, 14:50
 
Fecha de Ingreso: junio-2010
Mensajes: 373
Antigüedad: 14 años, 4 meses
Puntos: 11
Respuesta: Aparicion de elementos de forma escalonada

Hola madman.

Pues mira, es que falta un poquito de codigo o de explicacion en lo que quieres, pero me voy a atrever a adivinar.

Quieres que se muestre ese listado de forma gradual (como con una animacion), de forma que se muestre 1º el 1º, luego el 2º, etc....

muchos metodos de jquery proveen de un callback, que no es mas que una funcion que se ejecuta cuando el metodo ha completado su funcion.

Si lo que quieres es (mediante una animacion):
muestra el 1º-----mostrando--->acaba el 1º:muestra el 2º---mostrando---->...

Seria algo asi como:

Código Javascript:
Ver original
  1. $("ul li:first").fadeIn("slow",function(){//la funcion es el callback
  2.    $(this).next().fadeIn("slow",function(){//esta funcion se ejecutara cuando acabe el mostrado del primer elemento: le estas diciendo, el siguiente elemento a este, lo mismo, que se muestre
  3.       ....//sigues
  4.    });
  5.  
  6. });

Pero a medida que improviso estas lineas me entra la sensacion de lo que te digo:

- Me he visto obligado a utilizar el metodo .next() y el pseudoselector :first porque en tu codigo no pones que utilices ningun atributo "id" o "title", etc.... Con atributos la cosa cambiaria.
- No se si estas buscando que los elementos de la lista aparezcan con animate, con fadeIn, con show, ....
- Deben aparecer a la derecha del anterior??

Incluso el codigo que te pongo me parece bastante feo ya que es un apaño bastante feo. Con mas informacion supongo que se puede poner mas majo.

Espero haberte ayudado.

Un saludo!
  #3 (permalink)  
Antiguo 05/07/2013, 15:57
Avatar de Reedyseth  
Fecha de Ingreso: enero-2009
Ubicación: Chihuahua, México
Mensajes: 419
Antigüedad: 15 años, 9 meses
Puntos: 36
Respuesta: Aparicion de elementos de forma escalonada

@oms02 probaste Tú código y te funcionó ?

@madman_18 disculpa el codigo que te voy a compartir, pero funciona y hace lo que pediste, utiliza un timer con la función setTimeOut() y algo de programación de Javascript Avanzada llamada 'closures'.

El Javascript o mas bien jQuery:
Código Javascript:
Ver original
  1. jQuery(function($) {
  2.     $('ul li').hide();
  3.  
  4.     showElement();
  5.  
  6.     function showElement() {
  7.         // obtener número de elementos
  8.         var numElementos = $('ul li').length;
  9.         var i = 0;
  10.         var tiempoDelay = 650;
  11.  
  12.         function mostrar() {
  13.             $('ul li:eq('+i+')').stop().show("slow");
  14.             if(i < numElementos) {
  15.                 setTimeout(mostrar,tiempoDelay);
  16.                 i++;
  17.             }
  18.         }
  19.         setTimeout(mostrar,tiempoDelay);
  20.     }
  21. });

Tu html, si ya lo integras a un sitio solo es cuestión de que juegues con los selectores.
Código HTML:
Ver original
  1. <ul>
  2.      <li>opcion 1</li>
  3.      <li>opcion 2</li>
  4.      <li>opcion 3</li>
  5.      <li>opcion 4</li>
  6. </ul>

Saludos
__________________
Reedyseth
Te ayudo? No olvides dar un +
blog:http://behstant.com/blog
En el blog:Tutoriales de Desarrollo Web PHP, Javascript, BD y más.
  #4 (permalink)  
Antiguo 06/07/2013, 08:19
 
Fecha de Ingreso: junio-2010
Mensajes: 373
Antigüedad: 14 años, 4 meses
Puntos: 11
Respuesta: Aparicion de elementos de forma escalonada

que va, lo hice super "a pelo".
  #5 (permalink)  
Antiguo 06/07/2013, 11:09
Avatar de Reedyseth  
Fecha de Ingreso: enero-2009
Ubicación: Chihuahua, México
Mensajes: 419
Antigüedad: 15 años, 9 meses
Puntos: 36
Respuesta: Aparicion de elementos de forma escalonada

Cita:
Iniciado por oms02 Ver Mensaje
que va, lo hice super "a pelo".

También me ha pasado a mí jejeje, pero quería ver si te había funcionado
__________________
Reedyseth
Te ayudo? No olvides dar un +
blog:http://behstant.com/blog
En el blog:Tutoriales de Desarrollo Web PHP, Javascript, BD y más.
  #6 (permalink)  
Antiguo 09/07/2013, 06:24
Avatar de madman_18  
Fecha de Ingreso: agosto-2010
Mensajes: 792
Antigüedad: 14 años, 3 meses
Puntos: 14
Respuesta: Aparicion de elementos de forma escalonada

Gracias por las ayudas!!! ;) Perdón por no contestar antes pero no sé por qué no me han llegado los emails de que habíais escrito

Mañana lo podré probar con más tranquilidad y os comento :D :D

Gracias!
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, te convertes en algo muy diferente"
  #7 (permalink)  
Antiguo 09/07/2013, 08:21
Avatar de Reedyseth  
Fecha de Ingreso: enero-2009
Ubicación: Chihuahua, México
Mensajes: 419
Antigüedad: 15 años, 9 meses
Puntos: 36
Respuesta: Aparicion de elementos de forma escalonada

No te llegan por que no estas suscrito el tema para notificaciones futuras o instantaneas con email. Vete a la parte de arriba en el menú y te vas a herramientas>seguir tema, y ahi seleccionas como quieres recibir la notificación.

La otra forma es que si te hayas suscrito pero no te llegan por email las notificaciones, en tal caso te vas en el menú de esta arriba en la parte de preferencias>temas que sigues, y ahi puedes ver la actividad.

Saludos !!
__________________
Reedyseth
Te ayudo? No olvides dar un +
blog:http://behstant.com/blog
En el blog:Tutoriales de Desarrollo Web PHP, Javascript, BD y más.
  #8 (permalink)  
Antiguo 10/07/2013, 01:08
Avatar de madman_18  
Fecha de Ingreso: agosto-2010
Mensajes: 792
Antigüedad: 14 años, 3 meses
Puntos: 14
Respuesta: Aparicion de elementos de forma escalonada

Ya, ahora sí me llegan. Se ve que en este caso se me pasó marcar la opción de que me enviase notificaciones.... :D :D :D.

Por cierto.... se me pasó comentar, oms02, que sí, los elementos deben aparecer a la derecha del otro si hay espacio....

Quiero decir tendrían que aparecer:
1 - 2 - 3 - 4 ó
1 - 2 - 3
- 4
etc...
etc.....
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, te convertes en algo muy diferente"
  #9 (permalink)  
Antiguo 10/07/2013, 08:21
Avatar de Reedyseth  
Fecha de Ingreso: enero-2009
Ubicación: Chihuahua, México
Mensajes: 419
Antigüedad: 15 años, 9 meses
Puntos: 36
Respuesta: Aparicion de elementos de forma escalonada

Bueno eso ya es mas de estilo que de Javascript :p, para que salgan de la manera que quieres basta con ponerle un float left a cada elemento 'li'

Código CSS:
Ver original
  1. ul li {float: left;}
__________________
Reedyseth
Te ayudo? No olvides dar un +
blog:http://behstant.com/blog
En el blog:Tutoriales de Desarrollo Web PHP, Javascript, BD y más.

Etiquetas: aparicion, elementos, forma
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 18:36.