Crear un menú animado con CSS y JQuery

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

Autor de CSSBlog ES

Post relacionados


  • DonDiego
    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 !!!
  • Excelente aporte ideal para web.
  • Lo probare a ver si funciona en mi pagina
  • Me gusto el efecto que da , lo probre en mi web
  • portes
    muy buenn aporte
  • Cesar
    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
  • Pedro CM
    @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.
  • Rafael
    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?
  • Free
    No me sirve como le pongo el javascript a lo otro :S:S:S
  • Pedro CM
    @EZL pregúntalo en el foro de la comunidad: http://comunidad.cssblog.es

    Un saludo.
  • EZL
    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?
  • Kriztoval
    Aquellos que queréis utilizar Mootols, leed http://www.csslab.cl/2009/01/26/jquery-sin-conf...
  • RSB
    ¿Te has descargado la imagen?

    Esta aqui http://www.sohtanaka.com/web-design/examples/fa...

    Y luego asegurate que la ruta la escribes correctamente.
  • Pedro CM
    @gutavo pregúntalo en el foro: http://comunidad.cssblog.es

    Un saludo.
  • gutavo
    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
  • RSB
    Muchísimas gracias, ya conseguí que funcionara. Y me habéis dejado alucinado de tantas respuestas en tan poco tiempo.
  • Sergio
    Te repito porque salió truncado, en el encabezado del php lo tienes que poner entre las etiquetas HEAD.

    Saludos.
  • Sergio
    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.
  • Pedro CM
    @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 <script type="javascript">el código</script>.

    Un saludo.
  • RSB
    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?
  • Sergio
    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!
  • Pedro CM
  • Sergio
    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 !
  • Espectacular!! muchas gracias :D
  • muy bueno, excelente saludos!!!
  • Ramiro Riox - rariox
    Muy útil el menú, gracias!

Get Adobe Flash playerPlugin by wpburn.com wordpress themes