Foros del Web » Programando para Internet » Javascript »

menu hover

Estas en el tema de menu hover en el foro de Javascript en Foros del Web. Hola, Tengo un menu css que usa hover, es que hover es lo suyo porque lleva varios niveles y me acabo de enterar que no ...
  #1 (permalink)  
Antiguo 30/01/2012, 14:28
 
Fecha de Ingreso: mayo-2009
Mensajes: 382
Antigüedad: 14 años, 10 meses
Puntos: 6
menu hover

Hola,
Tengo un menu css que usa hover, es que hover es lo suyo porque lleva varios niveles y me acabo de enterar que no fucniona en pantallas táctiles el hover...

Tengo en el css esto entro otro:
#menu ul ul .level2:hover {color:#000099; background:#FFFF99;}
#menu a:hover {color:#000099; background:#FFFF99;}
#menu li:hover {position:relative; z-index: 500;}
#menu ul ul {position:absolute;}
#menu ul ul ul {top:-1px; left:100%;}
div#menu ul ul,
div#menu ul li:hover ul ul,
div#menu ul ul li:hover ul ul {display: none;}
div#menu ul li:hover ul,
div#menu ul ul li:hover ul,
div#menu ul ul ul li:hover ul {display: block;}

He enctontrado un pagina que se trata de prepara la web para iphone, y no sé si la solución vale para todo o solo para iphone y como no tengo nada táctil, pues es dificil de comprobar.
He encontrado este javascript que supuestamente cambiaría el hover por ontouche:
var myLinks = document.getElementsByTagName('a');
2 for(var i = 0; i < myLinks.length; i++){
3 myLinks[i].addEventListener('touchstart', function(){this.className = "hover";}, false);
4 myLinks[i].addEventListener('touchend', function(){this.className = "";}, false);
5 }

Si alquien me puede guiar, gracias.
  #2 (permalink)  
Antiguo 30/01/2012, 21:44
 
Fecha de Ingreso: octubre-2010
Mensajes: 107
Antigüedad: 13 años, 5 meses
Puntos: 14
Respuesta: menu hover

hola, el script que pusiste le pone una clase a los LINKS (solo etiquetas <a>) de la pagina cuando los estas "tocando" y cuando dejas de tocarlos quita la clase. Osea que no te servira para las listas ni divs, etc. No tengo clara la estructura del menu pero podrias hacer un escript como este pero para los "li" de la lista.
  #3 (permalink)  
Antiguo 31/01/2012, 01:04
 
Fecha de Ingreso: mayo-2009
Mensajes: 382
Antigüedad: 14 años, 10 meses
Puntos: 6
Respuesta: menu hover

Cita:
Iniciado por MARCASTELEON Ver Mensaje
hola, el script que pusiste le pone una clase a los LINKS (solo etiquetas <a>) de la pagina cuando los estas "tocando" y cuando dejas de tocarlos quita la clase. Osea que no te servira para las listas ni divs, etc. No tengo clara la estructura del menu pero podrias hacer un escript como este pero para los "li" de la lista.
Gracias, me di cuenta despues,
y como lo podia ser para li? algun enlace?

la lista es asi, en el mas larga hay dos niveles de li, lo necesito para li en general y en este caso tambien para li class="level2":
<ul>
<li><p>Properties&nbsp;<img src="new_arrow_down.gif" alt="Arrow down" border="0"></p>
<ul>
<li class="level2">Marbella Town Center&nbsp;<img src="new_arrow.gif" alt="Arrow right" border="0">
<ul>
<li class="level3"><a href="banana_beach_beachfront_apartment_marbella.h tm">Banana Beach (4-6 persons) 7 apartments 4*</a></li>
</ul>

Gracias

Última edición por helenp; 31/01/2012 a las 07:09
  #4 (permalink)  
Antiguo 31/01/2012, 14:35
 
Fecha de Ingreso: mayo-2009
Mensajes: 382
Antigüedad: 14 años, 10 meses
Puntos: 6
Respuesta: menu hover

He preguntado en otro foro tambien y alli dice que solo se puede poner el menu onclick :(
Si es posible como dijo Marcacasteleon como se podia hacer?

var myLinks = document.getElementsByTagName('a');
2 for(var i = 0; i < myLinks.length; i++){
3 myLinks[i].addEventListener('touchstart', function(){this.className = "hover";}, false);
4 myLinks[i].addEventListener('touchend', function(){this.className = "";}, false);
5 }

cambiando get document.getElementsByTagName('a') por ('li')
es asi de facil?
como no puedo hacerlo y probarlo, es complicado,
claro yo he probado los emuladores en internet pero con un ratón y claro el menu iba bien......
  #5 (permalink)  
Antiguo 01/02/2012, 08:26
 
Fecha de Ingreso: octubre-2010
Mensajes: 107
Antigüedad: 13 años, 5 meses
Puntos: 14
Respuesta: menu hover

Hola, siento la tardanza.
Como te habia mencionado anteriormente el script cambia la clase del elemento, por lo que debes hacer una clase css de mas para cuando esten "tocando" el elemento, que haga lo mismo del hover con el raton.
  #6 (permalink)  
Antiguo 01/02/2012, 11:25
 
Fecha de Ingreso: mayo-2009
Mensajes: 382
Antigüedad: 14 años, 10 meses
Puntos: 6
Respuesta: menu hover

Cita:
Iniciado por MARCASTELEON Ver Mensaje
Hola, siento la tardanza.
Como te habia mencionado anteriormente el script cambia la clase del elemento, por lo que debes hacer una clase css de mas para cuando esten "tocando" el elemento, que haga lo mismo del hover con el raton.
Como no entiendo mucho de javascript si te entiendo bien es solo hacer una clase css nuevo y poner algo asi, cambiar el tagname a li, y cambiar la clase hover a una clase css que llamo por ejemplo touch:

var myLinks = document.getElementsByTagName('li');
2 for(var i = 0; i < myLinks.length; i++){
3 myLinks[i].addEventListener('touchstart', function(){this.className = "touch";}, false);
4 myLinks[i].addEventListener('touchend', function(){this.className = "";}, false);
5 }


Gracias, lo intentare y que lo pruebe una amiga, como no tengo con que probar :)
  #7 (permalink)  
Antiguo 01/02/2012, 15:16
 
Fecha de Ingreso: octubre-2010
Mensajes: 107
Antigüedad: 13 años, 5 meses
Puntos: 14
Respuesta: menu hover

hola, puedes probarlo online en http://jsfiddle.net/
  #8 (permalink)  
Antiguo 03/02/2012, 14:10
 
Fecha de Ingreso: mayo-2009
Mensajes: 382
Antigüedad: 14 años, 10 meses
Puntos: 6
Respuesta: menu hover

Cita:
Iniciado por MARCASTELEON Ver Mensaje
hola, puedes probarlo online en [url]http://jsfiddle.net/[/url]
Gracias, lo he probado, pero me temo que no entiendo nada :(

Etiquetas: hover, touchstart
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:30.