Puedes recibir las actualizaciones gratis por email

Crear un menú animado con CSS y JQuery

menu-navegacion-css-jquery

Fancy Navigator Menu jQuery & CSS, es un menú realizado en CSS y JQuery, muy fácil de hacer, que nos permitirá darle un toque “personal” a nuestro menú de navegación (También podéis mirar la lista de menús de navegación que publicamos hace tiempo).

La estructura es muy sencilla:

Código HTML

<ul id="topnav">

<li><a href="#">Home</a></li>

<li><a href="#">Services</a></li>

<li><a href="#">Portfolio</a></li>

<li><a href="#">Blog</a></li>

<li><a href="#">About</a></li>

<li><a href="#">Contact</a></li>

</ul>

Una simple lista, que vamos a estilizar.

Código CSS

La clave principal para crear una máscara en el menú será la propiedad overflow: hidden.

jquery-menu-css-1

ul#topnav {

margin: 0;

padding: 0;

list-style: none;

float: left;

font-size: 1.1em;

}

ul#topnav li{

margin: 0;

padding: 0;

overflow: hidden;  /*--Importante - Estado inicial del menu, sin mantenernos encima de el--*/

float: left;

height:40px;

}

ul#topnav a, ul#topnav span {

padding: 10px 20px;

float: left;

text-decoration: none;

color: #fff;

background: url(a_bg.gif) repeat-x;

text-transform: uppercase;

clear: both;

width: 100%;

height: 20px;

line-height: 20px;

}

ul#topnav a{

color: #555;

background-position: left bottom;

}

ul#topnav span{ /*--Por defecto--*/

background-position: left top;

}

Código JS

jquery-animation

Ahora vamos a darle una animación al menú, gracias a JQuery. Primero debemos enlazar a la biblioteca de JQuery:

<script type="text/javascript"

src="http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js"></script>

Este es el código de jQuery a añadir en nuestro documento para que funcione la animación:

$(document).ready(function() {

$("#topnav li").prepend("<span></span>");

//Crear un espacio vacío antes de la etiqueta

$("#topnav li").each(function() {

//Por cada item

var linkText = $(this).find("a").html();

//Encontrar el texto denteo de la etiqueta <a>

$(this).find("span").show().html(linkText);

//Agregar el texto a la etiqueta span

});

$("#topnav li").hover(function() {

//En el hover (cuando el puntero del mouse se posiciona por encima)...

$(this).find("span").stop().animate({

marginTop: "-40" //Encontrar la etiqueta<span>

y moverla 40 px hacia arriba.

}, 250);

} , function() { //Cuando se quita (retira o mueve) el puntero del mouse...

$(this).find("span").stop().animate({

marginTop: "0"  //Mover la etiqueta <span>

devuelta a la posición original (0px)

}, 250);

});

});

Estandarización

CSS 2.1 válido.

XHTML 1.0 Transitional inválido (No se puede insertar la etiqueta en la línea 84, localizada en JQuery).

Ejemplo de su funcionamiento

Con esto lograremos un menú sencillo y a la vez práctico. Aunque desactivemos javascript seguirá siendo accesible. ¿Qué os parece?

Vía | Pixelco

Sigue la onda...

Puedes recibir gratis más artículos por RSS, Twitter, Facebook o correo electrónico. ¡Muchas gracias por leerme!

Autor de CSSBlog ES

Por ahora hay 28 comentarios ¿Quieres opinar?

Muy útil el menú, gracias!

muy bueno, excelente saludos!!!

08.05.09

Espectacular!! muchas gracias :D

08.05.09

Muy interesante menú!
El problema que tengo, es que en la plantilla de wordpress que lo deseo insertar utiliza ya el Mootools.v1.11.js, y con el jquery no es compatible.

Habrá un menu similar hecho en mootools ? o sino alguien sabe de un menú horizontal similar que utilice Mootools? estoy buscando en Google y no encontré nada similar.

Felicitaciones por el sitio !

08.05.09
08.05.09

Pedro, muchas gracias por la sugerencia, pero estaba buscando este mismo menú, que sea horizontal, tenga esos efectos de movimientos desarrollado en mootools.

Sigo buscando en la web, o quizás alguien puedo sugerir otro similar!

Gracias!

08.05.09

Estoy empezando y estoy un poco perdido.

Lo que pone después de “Este es el código de jQuery a añadir en nuestro documento para que funcione la animación:” ¿donde y como debería ponerlo, en el mismo archivo que el menu, dentro de etiquetas php?

¿Alguien me echa una mano?

08.05.09

@RSB puedes ponerlo en el mismo archivo o llamarlo desde ese archivo hacia un archivo javascript. Si decides ponerlo en el mismo archivo, debes incluirlo entre las etiquetas .

Un saludo.

08.05.09

Tenes dos opciones,
a)dentro del mismo php -> entre las etiquetas
b) en un archivo con extensión “.js”, con la salvedad que tienen que llamar este archivo del archivo php que muestra el menú.
Saludos.

08.05.09

Te repito porque salió truncado, en el encabezado del php lo tienes que poner entre las etiquetas HEAD.

Saludos.

08.05.09

Muchísimas gracias, ya conseguí que funcionara. Y me habéis dejado alucinado de tantas respuestas en tan poco tiempo.

08.05.09

amigo buenos dias tengo problemas con las imagenes como hago para insertarlas realizo todos los pasos el menu tiene el movimiento pero no sales las imagenes como hago ayuda soy nuevo en esto que pena molestarlo

08.05.09

@gutavo pregúntalo en el foro: http://comunidad.cssblog.es

Un saludo.

08.05.09

¿Te has descargado la imagen?

Esta aqui http://www.sohtanaka.com/web-design/examples/fancy-navigation/a_bg.gif

Y luego asegurate que la ruta la escribes correctamente.

08.05.09

Aquellos que queréis utilizar Mootols, leed http://www.csslab.cl/2009/01/26/jquery-sin-conflictos/

08.05.09

Hola, tengo un problema con el codigo, no logro darle movimiento,ya implemente la imagen y el codigo esta bien colocado, alguien puede decirme en donde podria estar mi error?

08.05.09

@EZL pregúntalo en el foro de la comunidad: http://comunidad.cssblog.es

Un saludo.

08.05.09

No me sirve como le pongo el javascript a lo otro :S:S:S

08.05.09

no me resulta el codigo lo copio pero me da mal resultado copio el codigo del menu de ejemplo funcionado y me resulta pero el cuadro rojo no me pega
es por que esta en una etiqueta o que?

08.05.09

@Rafael seguramente el código del ejemplo que hayas copiado no está apuntando a los archivos que debe. Podrías preguntarlo en el foro y así te resolveríamos mejor la duda: http://comunidad.cssblog.es.

Un saludo.

08.05.09

hola.
bueno quisiera salir de varias dudas
1. en HTML se coloca ese menu, me queda claro
2. el codigo CSS va dentro de HTML o se realiza u link al css
3. JS tambien en donde va, en un archivo aparte o en html

Hay que definir bien en que parte va cada codigo, asi se entendera mucho mejor

Los FELICITO en esta PAGINA encontrado mucha informacion y buenisima

08.05.09

muy buenn aporte

08.05.09

Me gusto el efecto que da , lo probre en mi web

08.05.09

Lo probare a ver si funciona en mi pagina

08.05.09

Excelente aporte ideal para web.

08.05.09

Está increible, me costó aplicarlo eso si, en la linea 35 y 45 del jquery no están etiquetadas como comentario y no me resultaba, gracias a Firebug lo pude solucionar.
Gracias.
Una consulta, si yo quiero que si estoy en el boton SERVICES por ejemplo se quede en la posicion de hover como lo puedo lograr?
Saludos y excelente blog, agregados a mis feeds !!!

08.05.09

DonDiego, pudiste resolver esto? yo tengo la misma duda

08.05.09

en mi pc lo veo perfecto pero en otras maquinas se ve mal
en el mozilla no se anima el menu
y en algunos de explorer es de 100 % la pag

Escribir un comentario

Tu comentario:
* El nombre, email y el comentario son requeridos
Comentaristas del mes
Últimos comentarios
  • Boda: Gracias Pedro, lo probaré a ver si me funciona bien porque le iría perfecto a mi blog que...
  • drakkar: hola necesito centrar el menu dentro del div que lo contiene pero mira lo que pasa cuando hago esto: <...
  • Erik: Gracias muchas.. muy bueno!
  • Pedro CM: Ya veo que lo retwitteaste por Twitter, me alegro ;-) . My recent post Pack de 100000 tipografías...
  • JuniHH: Te agradezco muchismo el enlace de los bordes redondeados sin necesidad de JS's raros. Cuando...
Patrocinadores