103

CSS: Menu horizontal, desplegable y bonito

2 de octubre de 2008 | Etiquetas: , | Categoría: CSS

He visto muchos menús desplegables por internet.. muy chulos, pero muy complicados para mi gusto, asi que voy a explicar como hacer un menu horizontal desplegable sencillito y funcional, tán solo con html y css.

Lo primero es la estructura, para ella usaré una lista, asi queda todo bien recogidito:

<ul id="menu-horizontal">
<li><a href="#" title="Texto">Texto</a></li>
<li><a href="#" title="Texto">Texto</a></li>
<li><a href="#" title="Texto">Texto</a>
<ul>
<li><a href="#" title="Texto">Texto</a></li>
<li><a href="#" title="Texto">Texto</a></li>
</ul>
</li>
<li><a href="#" title="Texto">Texto</a></li>
<li><a href="#" title="Texto">Texto</a></li>
</ul>

La cosa es así: el <ul> es el menú en sí, cada <li> es un botón del menú y el <ul> dentro del <li> es desplegable de ese botón. ¿Me se entiende? xD

Vale, ahora voy a aplicarle un poco de estilo para que quede el menu en horizontal, ya que por defecto las listas son verticales. Se consigue fácil, agregandole a los elementos de la lista el atributo de flotante:

ul#menu-horizontal li {
float: left;
display: inline;
position: relative;
}

Y ahora que es horizontal, voy a ocultar el submenú, ya que no quiero que aparezca aún, solo se tiene que mostrar cuando pase el ratón por encima del botón que tiene submenu. El css en cuestión:

ul#menu-horizontal ul {
display: none;
position: relative;
top: 24;
left:0;
margin:0;
padding:0;
background:#FFFFFF;
}

ul#menu-horizontal ul li {
display: block !important;
}

ul#menu-horizontal li:hover ul{
display: none;
}

ul#menu-horizontal li:hover ul{
display: block;
}

Y.. perfecto! Ya funciona nuestro menu desplegable y horizontal, pero nos queda un paso. Hacerlo bonito. Para ello aplicamos un poco de estilo por aquí..

#menu-horizontal {
width:500px;
margin:0 auto;
}

#menu-horizontal li {
margin:0 1px;
width:98px;
min-height:19px;
text-align:center;
background:#BBB;
list-style:none;
padding:2px 0;
}

/* y otro poquito por aquí.. */

#menu-horizontal li:hover {
background:#C5014F;
}

#menu-horizontal li a {
font:bold 11px Arial, Helvetica, sans-serif;
color:#FFF;
text-decoration:none;
}

#menu-horizontal li ul li{
float:none;
width:98px;
margin:1px 0;
}

Y.. apañao.

css menu horizontal

No es para decir: Uy que bruto que bonito que está, pero todo es empezar :P

Actualizado 29-01-2009: He modificado las propiedades de #menu-horizontal ul para que funcione correctamente en IE7 gracias a los comentarios de José Rico y Ring :D

Twittea esto Guardalo en Delicious Compartelo en Facebook

Articulos relacionados

Esta entrada se escribió el Jueves, octubre 2nd, 2008 at 14:24 pm bajo la categoría CSS. Puedes suscribirte a los comentarios de esta entrada gracias al RSS feed. Puedes comentar, o realizar un trackback desde tu web.

103 Responses to “CSS: Menu horizontal, desplegable y bonito”

Páginas: « 1 [2] Mostrar todos

  1. 101
    alfonso Says:

    Hola,felicidades muy buen tutorial, nuevamente preguntando como puedo agregar un sub-submenu, ya he insertado el codigo correspondiente, una ul dentro de li del sub menu, pero no le logrado poner el css correspondiente para que se ejecute, unicamente se agrega al submenu, te explico, dentro del menu tengo una etiqueta turismo, el submenu despliega hoteles, restaurantes, museos etc. lo que pretendo hacer es que al pasar el maouse al submenu hotel se me despliegue otro submenu, te agradecere mucho tu atencion a mi duda, de antemano gracias por tu tiempo y conocimientos

  2. 102
    Luis Says:

    Saludos desde USA cress que podrias ayudarme a realizar un sencillo buscador dentro de mi mi website la idea que desde este buscador consigas paginas de articulos o ejercicios.

    Gracias por tu ayuda

  3. 103
    wilson Says:

    gracias por el tutorial pero lo probe en IE8 y no sirve
    puedes ayudarme por favor??

Páginas: « 1 [2] Mostrar todos

Leave a Reply