Foros del Web » Programando para Internet » Javascript »

Problemas con mouseover y mouseout

Estas en el tema de Problemas con mouseover y mouseout en el foro de Javascript en Foros del Web. Hola. Saludos Estoy haciendo una barra de munus , que cada menu se abre deslizandose hacia abajo y se cierra deslizandose hacia arriba, con onmousever ...
  #1 (permalink)  
Antiguo 03/01/2011, 12:16
 
Fecha de Ingreso: enero-2011
Mensajes: 3
Antigüedad: 13 años, 4 meses
Puntos: 0
Problemas con mouseover y mouseout

Hola.
Saludos

Estoy haciendo una barra de munus , que cada menu se abre deslizandose hacia abajo y se cierra deslizandose hacia arriba, con onmousever y onmouseout. El ERROR es que si abro un segundo menu y el primero no ha subido del todo este -el primero- se queda "cologado".

Código Javascript:
Ver original
  1. <html>
  2. <html>
  3. <head>
  4. <style>
  5. #Menu1  {position:absolute;
  6.     top:-190px; left:150px;
  7.     font-size:15px;visibility:visible;
  8.     background-color:#D0BCFE;
  9.     width:114px;z-index:0;border-style:solid;
  10.     }
  11. #Menu2  {position:absolute;
  12.     top:-190px; left:580px;
  13.     font-size:15px;visibility:visible;
  14.     background-color:#D0BCFE;
  15.     width:114px;z-index:0;border-style:solid;
  16.     }
  17. #Menu3  {position:absolute;
  18.     top:-190px; left:1005px;
  19.     font-size:15px;visibility:visible;
  20.     background-color:#D0BCFE;
  21.     width:114px;z-index:0;border-style:solid;
  22.     }
  23.  
  24. TD.TDHREFMENUS{font-size:20;color:red;position:relative;z-index:0;background-color:#C4ABFE;border-style:solid;width:114px;}
  25. </style>
  26. <script>
  27.  
  28. var stopSube=null;
  29. var stopBaja=null;
  30. var mov=-143;
  31. var on;
  32.  
  33. function baja(id){
  34.             if (!on){
  35.                  on=true;
  36.                  clearTimeout(stopSube)
  37.                  stopSube=null;
  38.                  }
  39.  
  40.    var obj=document.getElementById(id)
  41.    obj.style.top=mov +"px";
  42.             if (mov <=27){
  43.                mov+=2;
  44.                stopBaja=setTimeout(function (){
  45.                baja(id)}, 20)
  46.              }
  47. }
  48.  
  49. function sube(id){
  50.             if (on){
  51.                on=false;
  52.                clearTimeout(stopBaja)
  53.                stopBaja=null;
  54.             }
  55.  
  56.    var obj=document.getElementById(id)
  57.    obj.style.top=mov +"px";
  58.             if (mov >=-143){
  59.                mov-=2;
  60.                stopSube=setTimeout(function(){
  61.                sube(id)}, 20);
  62.             }
  63. }
  64.  
  65.  
  66. </script>
  67.  
  68. </head>
  69.  
  70. <body leftmargin=0 marginwidth=0 topmargin=0 marginheight=0>
  71.  
  72.  
  73. <div id="Menu1" onmouseover="baja('Menu1')" onmouseout="sube('Menu1')">
  74. <A HREF="#">URL 1</A> <br>
  75. <A HREF="#">URL 2</A> <br>
  76. <A HREF="#">URL 3</A> <br>
  77. <A HREF="#">URL 4</A> <br>
  78. <A HREF="#">URL 5</A> <br>
  79. <A HREF="#">URL 6</A> <br>
  80. <A HREF="#">URL 7</A> <br>
  81. <A HREF="#">URL 8</A> <br>
  82. </div>
  83.  
  84. <div id="Menu2" onmouseover="baja('Menu2')" onmouseout="sube('Menu2')">
  85. <A HREF="#">URL 1</A> <br>
  86. <A HREF="#">URL 2</A> <br>
  87. <A HREF="#">URL 3</A> <br>
  88. <A HREF="#">URL 4</A> <br>
  89. <A HREF="#">URL 5</A> <br>
  90. <A HREF="#">URL 6</A> <br>
  91. <A HREF="#">URL 7</A> <br>
  92. <A HREF="#">URL 8</A> <br>
  93. </div>
  94.  
  95. <div id="Menu3" onmouseover="baja('Menu3')" onmouseout="sube('Menu3')">
  96. <A HREF="#">URL 1</A> <br>
  97. <A HREF="#">URL 2</A> <br>
  98. <A HREF="#">URL 3</A> <br>
  99. <A HREF="#">URL 4</A> <br>
  100. <A HREF="#">URL 5</A> <br>
  101. <A HREF="#">URL 6</A> <br>
  102. <A HREF="#">URL 7</A> <br>
  103. <A HREF="#">URL 8</A> <br>
  104. </div>
  105.  
  106. <TABLE cellSpacing=0 cellPadding=0 BORDER=1 WIDTH=100%>
  107.            <TBODY>
  108.                       <TR>
  109.                            <TD align=middle CLASS="TDHREFMENUS"><a href="#" onmouseover="baja('Menu1')" onmouseout="sube('Menu1')">MENU 1</a>
  110.                            </TD>
  111.                            <TD align=middle CLASS="TDHREFMENUS"><a href="#" onmouseover="baja('Menu2')" onmouseout="sube('Menu2')">MENU 2</a>
  112.                            </TD>
  113.                            <TD align=middle CLASS="TDHREFMENUS"><a href="#" onmouseover="baja('Menu3')" onmouseout="sube('Menu3')">MENU 3</a>
  114.                            </TD>
  115.                      </TR>
  116.            </TBODY>
  117. </TABLE>
  118.  
  119. <html>
  120. <head>
  #2 (permalink)  
Antiguo 05/01/2011, 09:30
 
Fecha de Ingreso: enero-2011
Mensajes: 3
Antigüedad: 13 años, 4 meses
Puntos: 0
Respuesta: Problemas con mouseover y mouseout

Hola, algien tiene una idea de como concelar con clearTiemout al menu que tiene el foco sin afecte a los demas menus.
Gracias
  #3 (permalink)  
Antiguo 07/01/2011, 08:46
(Desactivado)
 
Fecha de Ingreso: noviembre-2002
Ubicación: Ciudad Autónoma de Buenos Aires
Mensajes: 2.367
Antigüedad: 21 años, 5 meses
Puntos: 317
Respuesta: Problemas con mouseover y mouseout

Hola anje7783 :

Tu problema tenía una solución medio complicada, pero ahora ya está mejor resuelto.

De cualquier forma, en el enlace que te dejo, la versión CSS no anda en Opera 11 y en los demás la cambia por JQuery. Vamos a tener que hacer alguna nosotros, y que funcione.

Como veo que tienes voluntad para resolver el tema, creo que vas a poder adaptar el código a lo que necesitas.
Caricatos puso uno que no recuerdo dónde está; no movía capas, pero cambiaba valores de color en enlaces. Para el caso es lo mismo.

Efecto puerta garaje

http://css-tricks.com/garage-door-style-menu/
  #4 (permalink)  
Antiguo 09/01/2011, 05:44
 
Fecha de Ingreso: enero-2011
Mensajes: 3
Antigüedad: 13 años, 4 meses
Puntos: 0
Respuesta: Problemas con mouseover y mouseout

Hola furoya muchas gracias por tu ayuda, pero aun lo tengo complicado y no lo tengo resulto, pero no quiero ser tan pesado pero . ¿Hay alguna forma de hacerlo solo en javascript sin css ni alguna libreria?

Otra obcion nada recomendable y nada elegante para que se me detengan los menus a la mitad del camino es hacer una funcion para cada menu.

Saludos.
Gracias
  #5 (permalink)  
Antiguo 16/01/2011, 07:41
(Desactivado)
 
Fecha de Ingreso: noviembre-2002
Ubicación: Ciudad Autónoma de Buenos Aires
Mensajes: 2.367
Antigüedad: 21 años, 5 meses
Puntos: 317
Respuesta: Problemas con mouseover y mouseout

Se puede hacer con JS, pero da mucho trabajo. Los que están ya hechos son más bien acotados a un diseño específico, para no meter tanta línea de código.

Estuve probando algo para el que pusiste más arriba (que, por otro lado, es una vergüenza ¡ni yo pongo borradores tan mal escritos!). Pero al final no lo terminé. Es que no dispongo de mucho tiempo frente a alguna máquina, y encima soy bastante lerdo para escribir programas.
Hace unos años casi lo hago, porque Paranoid había empezado un tema que estaba seguro que iba a terminar en varias capas que subían y bajaban "paso a paso". Y como no lo explicó desde el principio, lo dejé que fuera avanzando solo. Creo que tiró la toalla cuando vio lo complejo que era.

CRear efecto de transicion entre dos imagenes.

Pero insisto, no es imposible de ningún modo, y ya se hizo. Vas a tener problemas con los eventos onmouseover y onmouseout, acá hay un tema que habla de eso

Problemas con onMouseOut

Y en los menúes de

http://www.pepemolina.com/

hay una animación de colores que hace justamente esto, al pasar el puntero sobre un botón cambia gradualmente de color, y al salir para entrar en otro, el primero vuelve paso a paso al color original mientras el segundo repite el efecto que hizo el primero. Ve cómo está hecho; y en vez de modificar el R, G o B del color, haces que cambie el top del bloque de enlaces.

Lo demás es cuestión de CSS y HTML, hay que probar cómo se ubican mejor las capas.

efecto especial de hover en los links con CSS

Efecto Para Links

P.D.: Lo de un escript para cada menú tampoco está mal, si son solamente tres. En IE había una forma de escribir uno sólo y que se aplicara por separado a cada menú. Voy a ver si funciona y cómo se puede meter en otros navegadores.

Etiquetas: menus
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 19:52.