Menú horizontal con imagen al pasar el mouse
En este artículo vamos a programar desde 0 un menú horizontal que al hacer hover o pasar el ratón por encima del elemento del menú aparezca un imagen por encima que aparentemente no está visible empleando para ello jQuery.
El contenido HTML del menú deberá ser tan simple como el siguiente ejemplo (una lista de elementos):
<ul id="menu"> <li><a href="#">Home</a></li> <li><a href="#">Services</a></li> <li><a href="#">Contact</a></li> </ul>
Ahora añadiremos un poco de maquetación simple al menú en la hoja de estilos que utilices:
#menu { float:left; width:100%; height:40px; background-color:#003399; z-index:9999; margin-top:40px; } #menu li { float:left; list-style:none; height:40px; position:relative; text-align:center; } #menu li a { background-color: #003399; color: #FFFFFF; float: left; height: 30px; overflow: hidden; padding: 5px 10px; position: relative; text-align: center; text-decoration: none; z-index: 1; } #menu li a:hover { color:#003399; background-color: #999999; text-decoration:none; } #menu li img { bottom:0px; left:0px; position: absolute; z-index:0; }
Y ahora faltaría hablar de la parte clave o más interesante del asunto. Realizar el efecto de que al pasar el ratón por encima de uno de los elementos del menú, aparezca una imagen que aparentemente está escondida.
En la cabecera de la página que estés utilizando deberás añadir la librería jQuery + el script que realiza la operación:
<script type="text/javascript" src="../jquery.js"></script> <script type="text/javascript"> $(function() { $('#menu li').hover(function(){ $(this).find('img').animate({bottom:'35px'},{queue:false,duration:500}); }, function(){ $(this).find('img').animate({bottom:'0px'},{queue:false,duration:500}); }); $.each($('#menu li'), function(i, l){ if (i == 0) $(this).append('<img src="grey.jpg" />'); else $(this).append('<img src="taza.png" />'); }); }); </script>
En la primera parte del código tenemos la aplicación del efecto al hacer hover con el ratón, utilizando la función animate que con los parámetros que le hemos pasado lo que conseguimos es subir la imagen a 35px de su posición con una duración de medio segundo. Al sacar el ratón, se devuelve la imagen a su posición original. Fíjate en los estilos de las imágenes que están sutuadas a bottom:0px.
En la segunda parte del código estamos añadiendo algo de lógica al menú mediante un bucle. Es ampliable ya que en este caso tan solo estamos añadiendo a cada elemento del menú una imagen. Estamos iterando todos los li del menú y para el primer elemento le estamos añadiendo una imagen asociada con el nombre «grey.jpg» y para el resto «taza.png».
Podrás ver el efecto en el ejemplo en funcionamiento
Hola José Aguilar. Supongamos que en mi página web tengo capa cabecera, capa
lado izquierdo, capa principal y capa pie.
Lo que quiero que con tu ejemplo de menu
http://www.jose-aguilar.com/blog/menu-desplegable-simple-con-jquery/ o bien con este mismo Menú horizontal con imagen al pasar el mouse
al hacer clic en los enlaces mis páginas html se abran en la capa principal sin
que se vean alteradas las capas cabecera, izquierda y pie.
Lo tengo para que se abran en un IFRAME y funciona, <li><a href="fracturas.html"
target="hud">Fracturas</a></li> y el iframe <iframe src= "archivos/contenido.html"
name= "hud" id= "hud" width="1175" height="800"></iframe>
ahora quisiera el mismo efecto pero en la capa principal sin iframe
<div>="principal….
Gracias de nuevo y Te deseo a ti y a los tuyos unos Felices días y un gran 2017
Hola José Aguilar. Supongamos que en mi página web tengo capa cabecera, capa
lado izquierdo, capa principal y capa pie.
Lo que quiero que con tu ejemplo de menu
http://www.jose-aguilar.com/blog/menu-desplegable-simple-con-jquery/
al hacer clic en los enlaces mis páginas html se abran en la capa principal sin
que se vean alteradas las capas cabecera, izquierda y pie.
Lo tengo para que se abran en un IFRAME y funciona, <li><a href="fracturas.html"
target="hud">Fracturas</a></li> y el iframe <iframe src= "archivos/contenido.html"
name= "hud" id= "hud" width="1175" height="800"></iframe>
ahora quisiera el mismo efecto pero en la capa principal sin iframe
<div>="principal….
Gracias de nuevo y Te deseo a ti y a los tuyos unos Felices días y un gran 2017. He intentado introducir como txt pero me daba error 403. será que tienes protegido escribir direcciones reales?
Hola! Intento dejar comentario y me da error 403.
Hola! qué menús necesito para abrir los enlaces.
link1
link2
linkn
en otra capa al lado derecho y que las dos permanezcan en pantalla como haces tú en tu web.
Gracias
Hola buenas tardes,
Siento decirle que no sabemos a que se refiere. Nos lo puede indicar con más detalle?
Saludos