Foros del Web » Programando para Internet » Javascript »

retardar un movimiento en opciones de menu

Estas en el tema de retardar un movimiento en opciones de menu en el foro de Javascript en Foros del Web. Hola amigos, verán tengo una duda sobre un código que os muestro a continuación, y que consiste en que muestra una serie de rectángulos que ...
  #1 (permalink)  
Antiguo 22/01/2014, 16:52
 
Fecha de Ingreso: mayo-2012
Mensajes: 760
Antigüedad: 11 años, 11 meses
Puntos: 5
retardar un movimiento en opciones de menu

Hola amigos, verán tengo una duda sobre un código que os muestro a continuación,

y que consiste en que muestra una serie de rectángulos que suben o bajan según la opción de menú en la que hagamos click.

Esto como digo lo hace perfectamente pero el problema que tengo es que necesito que cuando se haga click en un botón del menú para bajar o subir cada uno de los rectángulos , lo haga pasados un par de segundos y que no lo haga de manera inmediata como es como lo hace en este momento.

El código es el siguiente, (por cierto el código tiene javascript + css y html pero no puedo separarlo en este post y poner solo la parte javascript por que sino lo mismo no se entendería del todo):


Código Javascript:
Ver original
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
  2. <html dir="ltr">
  3. <head>
  4. <style type="text/css">
  5.     #parrafo1, #parrafo2, #parrafo3, #parrafo4, #parrafo5, #parrafo6, #parrafo7, #parrafo8, #parrafo9 {
  6.         position:absolute; top:100px;
  7.         width:100px; height:50px; background-color: #99FFFF;
  8.     }
  9.     #parrafo1 {left:0px;}
  10.     #parrafo2 {left:110px;}
  11.     #parrafo3 {left:220px;}
  12.    
  13.     #parrafo4 {left:330px;}
  14.     #parrafo5 {left:440px; top:310px;}
  15.     #parrafo6 {left:550px;}
  16.    
  17.     #parrafo7 {left:660px;}
  18.     #parrafo8 {left:770px;}
  19.     #parrafo9 {left:880px;}    
  20.    
  21.     ul {
  22.         padding:0px;
  23.     }
  24.     li {
  25.         float:left;
  26.         list-style-type:none;
  27.         padding-left:10px;
  28.         cursor:pointer;
  29.     }
  30. </style>
  31.  
  32. <script type="text/javascript">
  33.     function MoverTexto(id,d)
  34.     {
  35.         for(var i=1;i<=9;i++)
  36.         {
  37.             var bloque=document.getElementById("parrafo"+i);
  38.             if(i==id)
  39.             {
  40.                 if(d=="arriba")
  41.  
  42.                     bloque.style.top="310px";
  43.             }else{
  44.                 bloque.style.top="100px";
  45.             }
  46.         }
  47.     }
  48. </script>
  49.  
  50. </head>
  51.  
  52. <body>
  53.     <ul>
  54.         <li onclick="MoverTexto('1', 'arriba');">Opcion 1</li>
  55.         <li onclick="MoverTexto('2', 'arriba');">Opcion 2</li>
  56.         <li onclick="MoverTexto('3', 'arriba');">Opcion 3</li>        
  57.         <li onclick="MoverTexto('4', 'arriba');">Opcion 4</li>
  58.         <li onclick="MoverTexto('5', 'arriba');">Opcion 5</li>
  59.         <li onclick="MoverTexto('6', 'arriba');">Opcion 6</li>
  60.         <li onclick="MoverTexto('7', 'arriba');">Opcion 7</li>
  61.         <li onclick="MoverTexto('8', 'arriba');">Opcion 8</li>
  62.         <li onclick="MoverTexto('9', 'arriba');">Opcion 9</li>        
  63.        
  64.     </ul>
  65.  
  66.     <div id="parrafo1"></div>
  67.     <div id="parrafo2"></div>
  68.     <div id="parrafo3"></div>
  69.     <div id="parrafo4"></div>
  70.     <div id="parrafo5"></div>
  71.     <div id="parrafo6"></div>
  72.     <div id="parrafo7"></div>
  73.     <div id="parrafo8"></div>
  74.     <div id="parrafo9"></div>
  75.    
  76. </body>
  77. </html>


Gracias de antemano.
  #2 (permalink)  
Antiguo 22/01/2014, 17:42
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: retardar un movimiento en opciones de menu

En los estilos, añade un tiempo de transición:

Código CSS:
Ver original
  1. #parrafo1, #parrafo2, #parrafo3, #parrafo4, #parrafo5, #parrafo6, #parrafo7, #parrafo8, #parrafo9 {
  2.     position: absolute;
  3.     top:100px;
  4.     width:100px;
  5.     height:50px;
  6.     background-color: #99FFFF;
  7.     transition: top 1.5s;
  8. }

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #3 (permalink)  
Antiguo 23/01/2014, 05:29
 
Fecha de Ingreso: mayo-2012
Mensajes: 760
Antigüedad: 11 años, 11 meses
Puntos: 5
Respuesta: retardar un movimiento en opciones de menu

Maravilloso lo de poner en el css esto que me has dicho:

Código XML:
Ver original
  1. transition: top 1.5s;

Pero aunque funciona muy bien (y es algo que desconocía que pudiera hacerse en css).

No consigo el efecto deseado que comento.

Veréis, seria que cuando una vez haya hecho clic en e uno de los botones para que baje uno de los rectángulos hacia abajo, digamos que bajara invisible y que una vez ya abajo se hiciera visible pasados un par de segundos mas o menos.

Espero haberme explicado mejor.

aun asi me has enseñado algo que desconocía y que me sea muy útil.

Pero si pudieran ayudarme en esto que me queda pendiente estaría muy agradecido.
  #4 (permalink)  
Antiguo 23/01/2014, 09:17
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: retardar un movimiento en opciones de menu

En tal caso, retarda la acción con el método setTimeout:

Código Javascript:
Ver original
  1. function MoverTexto(id,d)
  2. {
  3.     setTimeout(function(){
  4.         for (i = 1; i <= 9; i++)
  5.         {
  6.             var bloque = document.getElementById("parrafo"+i);
  7.             if (i == id)
  8.             {
  9.                 if (d == "arriba")
  10.                     bloque.style.top = "310px";
  11.             }
  12.             else
  13.                 bloque.style.top = "100px";
  14.         }
  15.     }, 2000);
  16. }

Lo que hace dicho método es ejecutar la función que se le pasa como primer parámetro al término del tiempo establecido en el segundo parámetro, que en este caso son 2000 milisegundos o 2 segundos. Vas a tener que quitarle el efecto que le añadí en CSS para que se vea como quieres.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #5 (permalink)  
Antiguo 23/01/2014, 13:44
 
Fecha de Ingreso: mayo-2012
Mensajes: 760
Antigüedad: 11 años, 11 meses
Puntos: 5
Respuesta: retardar un movimiento en opciones de menu

Muchas gracias fenomeno!!!, me sirvió a la perfección.

Muchas gracias

y ya de paso si le sirve el código que puesto a alguien ahí lo tiene.

saludos.

Etiquetas: html, movimiento, opciones
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 13:26.