Menú animado desplegable con CSS y jquery

menu_desplegableTras el inesperado éxito de mi artículo Menú animado con CSS y jquery, me he decidido a escribir un nuevo tutorial sobre creación de menús: cómo hacer un menú horizontal animado desplegable con CSS y jquery. Cada elemento del menú horizontal contendrá un submenú vertical que se desplegará con una animación. A su vez, al pasar el ratón sobre cada entrada del submenú éste cambiará de color de forma gradual. El resultado lo puedes ver aquí: Ver demo

Imágenes

La única imagen que vamos a utilizar es este gradiente para el fondo de los submenús, que además del efecto relieve que proporciona, nos ayudará a realizar las transiciones del hover.

fondo_menu

HTML

El html empleado es una simple lista con otra lista anidada para cada submenú:

<ul id="nav">
	<li><a href="#">Menu 1</a>
		<ul class="submenu">
			<li><a href="#">Submenu 1</a></li>
			<li><a href="#">Submenu 2</a></li>
			<li><a href="#">Submenu 3</a></li>
		</ul>
	</li>
	<li><a href="#">Menu 2</a>
		<ul class="submenu">
			<li><a href="#">Submenu 1</a></li>
			<li><a href="#">Submenu 2</a></li>
			<li><a href="#">Submenu 3</a></li>
		</ul>
	</li>
	<li><a href="#">Menu 3</a>
		<ul class="submenu">
			<li><a href="#">Submenu 1</a></li>
			<li><a href="#">Submenu 2</a></li>
			<li><a href="#">Submenu 3</a></li>
		</ul>
	</li>
	<li><a href="#">Menu 4</a>
		<ul class="submenu">
			<li><a href="#">Submenu 1</a></li>
			<li><a href="#">Submenu 2</a></li>
			<li><a href="#">Submenu 3</a></li>
		</ul>
	</li>
</ul>

Añadiendo el CSS

La mayor parte del css son para mejorar el aspecto visual del menú. Funcionalmente, podemos destacar varias cosas. Los elementos de la lista principal (#nav) se encuentran flotados a la izquierda, para formar el menú horizontal, y tienen position: relative para que sirva de referencia a cada submenú. A la lista del submenú le asignamos position: absolute, para que cuando se despliegue esté situada bajo su menú correspondiente. Este submenú lo ocultamos por defecto con display: none para después mostrarlo con javascript cuando pasemos el ratón por encima de su menú padre. A cada enlace del elemento del submenú añadiremos la imagen del gradiente como background.

a{
display: block;
text-decoration: none;
color: #004a80;
padding: 5px;
}
 
ul{
width: 500px;
height: 28px;
}
 
ul,li{
list-style: none;
margin:0;
padding:0;
}
 
#nav{
font-family: 'Century Gothic', sans-serif;
}
 
#nav li{
float:left;
position: relative;
width: 125px;
font-size: 14px;
font-variant: small-caps;
border-top:1px solid #004a80;
border-bottom:1px solid #004A80;
}
 
.submenu{
display: none;
position: absolute;
left: -1px;
border:none;
height: auto;
background: none;
}
 
#nav .submenu li{
float: none;
position: static;
margin: 0;
font-size: 11px;
font-variant: normal;
border: 1px solid #004a80;
border-top: none;
width: 124px;
}
 
#nav .submenu li a{
color: #FFFFFF;
background: #004a80 url('fondo_menu_vertical.png') repeat-x 0 0;
width: 114px;
height: 16px;
}

Javascript y jQuery

Ahora añadiremos la funcionalidad del menú. Para ello necesitaremos primero incluir la librería jQuery, que podemos hacerlo cargándola directamente desde el repositorio de Google:

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js" type="text/javascript" charset="utf-8"></script>

También necesitaremos añadir el plugin backgroundPosition para jQuery, ya que éste no soporta de serie la animación de la propiedad background-position. Lo descargaremos y añadiremos así:

<script type="text/javascript" src="jquery.backgroundPosition.js"></script>

Finalmente, con unas pocas líneas de código, usando la función slideDown/slideUp y el evento hover mostraremos el submenú correspondiente cuando pasemos el ratón por uno de los elementos del menú principal. Usando la función animate, al pasar el ratón por encima de cada entrada del submenú se cambiará la propiedad background-position, deslizando la imagen del gradiente y creando un efecto de fundido rápido, para que la transición sea más suave que si utilizáramos simplemente a:hover para cambiar el color de fondo del enlace activo.

<script type="text/javascript">
$(function(){
	$('#nav>li').hover(
		function(){
		$('.submenu',this).stop(true,true).slideDown('fast');
		},
		function(){
		$('.submenu',this).slideUp('fast');
		}
	);
 
	$('.submenu li a').css( {backgroundPosition: "0px 0px"} ).hover(
		function(){
		$(this).stop().animate({backgroundPosition: "(0px -99px)"}, 250);
		},
		function(){
		$(this).stop().animate({backgroundPosition: "(0px 0px)"}, 250);
		}
	);			
});
</script>

Enlaces

423 comentarios para “Menú animado desplegable con CSS y jquery”

  1. visit the up coming post

    Menú animado desplegable con CSS y jquery « David Rojas – Diseño y desarrollo web

  2. go!! dice:

    go!!

    Menú animado desplegable con CSS y jquery « David Rojas – Diseño y desarrollo web

  3. mua-ban-bida.click writes

    Menú animado desplegable con CSS y jquery « David Rojas – Diseño y desarrollo web

  4. visit the site

    Menú animado desplegable con CSS y jquery « David Rojas – Diseño y desarrollo web

  5. simply click the following article

    Menú animado desplegable con CSS y jquery « David Rojas – Diseño y desarrollo web

  6. simply click the following webpage

    Menú animado desplegable con CSS y jquery « David Rojas – Diseño y desarrollo web

  7. visit the up coming site

    Menú animado desplegable con CSS y jquery « David Rojas – Diseño y desarrollo web

  8. More about the author

    Menú animado desplegable con CSS y jquery « David Rojas – Diseño y desarrollo web

  9. Highly recommended Internet site

    Menú animado desplegable con CSS y jquery « David Rojas – Diseño y desarrollo web

  10. click through the following web page

    Menú animado desplegable con CSS y jquery « David Rojas – Diseño y desarrollo web

  11. simply click the up coming internet site

    Menú animado desplegable con CSS y jquery « David Rojas – Diseño y desarrollo web

  12. click the up coming webpage

    Menú animado desplegable con CSS y jquery « David Rojas – Diseño y desarrollo web

  13. original site

    Menú animado desplegable con CSS y jquery « David Rojas – Diseño y desarrollo web

  14. listen to this podcast

    Menú animado desplegable con CSS y jquery « David Rojas – Diseño y desarrollo web

  15. simply click the next site

    Menú animado desplegable con CSS y jquery « David Rojas – Diseño y desarrollo web

  16. Cap Dieu Khien Chong Nhieu Sangjin Chinh Hang post to a company blog

    Menú animado desplegable con CSS y jquery « David Rojas – Diseño y desarrollo web

  17. new post from http://www.kinh-doanh-bida.click

    Menú animado desplegable con CSS y jquery « David Rojas – Diseño y desarrollo web

  18. Get the facts

    Menú animado desplegable con CSS y jquery « David Rojas – Diseño y desarrollo web

  19. acomics.ru explains

    Menú animado desplegable con CSS y jquery « David Rojas – Diseño y desarrollo web

  20. click through the up coming web site

    Menú animado desplegable con CSS y jquery « David Rojas – Diseño y desarrollo web

  21. visit the next site

    Menú animado desplegable con CSS y jquery « David Rojas – Diseño y desarrollo web

  22. what is rice dice:

    what is rice

    Menú animado desplegable con CSS y jquery « David Rojas – Diseño y desarrollo web

  23. read this article

    Menú animado desplegable con CSS y jquery « David Rojas – Diseño y desarrollo web

  24. mouse click the up coming document

    Menú animado desplegable con CSS y jquery « David Rojas – Diseño y desarrollo web

  25. please click the next post

    Menú animado desplegable con CSS y jquery « David Rojas – Diseño y desarrollo web

  26. learn here dice:

    learn here

    Menú animado desplegable con CSS y jquery « David Rojas – Diseño y desarrollo web

  27. mouse click the up coming webpage

    Menú animado desplegable con CSS y jquery « David Rojas – Diseño y desarrollo web

  28. by http://www.creativelive.com

    Menú animado desplegable con CSS y jquery « David Rojas – Diseño y desarrollo web

  29. what is cashew nuts

    Menú animado desplegable con CSS y jquery « David Rojas – Diseño y desarrollo web

  30. visit these guys

    Menú animado desplegable con CSS y jquery « David Rojas – Diseño y desarrollo web

  31. use creator.wonderhowto.com here

    Menú animado desplegable con CSS y jquery « David Rojas – Diseño y desarrollo web

  32. information from hub.docker.com

    Menú animado desplegable con CSS y jquery « David Rojas – Diseño y desarrollo web

  33. click the up coming document

    Menú animado desplegable con CSS y jquery « David Rojas – Diseño y desarrollo web

  34. information from 8tracks.com

    Menú animado desplegable con CSS y jquery « David Rojas – Diseño y desarrollo web

  35. mouse click the next site

    Menú animado desplegable con CSS y jquery « David Rojas – Diseño y desarrollo web

  36. click through the up coming website page

    Menú animado desplegable con CSS y jquery « David Rojas – Diseño y desarrollo web

  37. browse around this web-site

    Menú animado desplegable con CSS y jquery « David Rojas – Diseño y desarrollo web

  38. gia-ban-bida.click official blog

    Menú animado desplegable con CSS y jquery « David Rojas – Diseño y desarrollo web

  39. what is yoga dice:

    what is yoga

    Menú animado desplegable con CSS y jquery « David Rojas – Diseño y desarrollo web

  40. https://writeablog.net

    Menú animado desplegable con CSS y jquery « David Rojas – Diseño y desarrollo web

  41. Web Site dice:

    Web Site

    Menú animado desplegable con CSS y jquery « David Rojas – Diseño y desarrollo web

  42. Going at 4mark

    Menú animado desplegable con CSS y jquery « David Rojas – Diseño y desarrollo web

  43. just click the next webpage

    Menú animado desplegable con CSS y jquery « David Rojas – Diseño y desarrollo web

  44. visit Codeberg now >>>

    Menú animado desplegable con CSS y jquery « David Rojas – Diseño y desarrollo web

  45. continue reading this..

    Menú animado desplegable con CSS y jquery « David Rojas – Diseño y desarrollo web

  46. visit the up coming website

    Menú animado desplegable con CSS y jquery « David Rojas – Diseño y desarrollo web

  47. Read Home Page

    Menú animado desplegable con CSS y jquery « David Rojas – Diseño y desarrollo web

  48. Full Article dice:

    Full Article

    blog topic

  49. try these out

    Menú animado desplegable con CSS y jquery « David Rojas – Diseño y desarrollo web

  50. browse around this site

    Menú animado desplegable con CSS y jquery « David Rojas – Diseño y desarrollo web

Deja un comentario

Time limit is exhausted. Please reload the CAPTCHA.

RSS iTunes podcast Twitter

Categorías

Enlaces

Archivos