9. Tutorial: barra de navegación con submenú con HTML y CSS

Tutorial: barra de navegación con submenú (o menú desplegable) con HTML y CSS

Vamos a crear una barra de navegación como esta:


Lo primero es crear una lista anidada.



Como se puede ver, el "Item 2" contiene un submenú.

A continuación, eliminamos el "padding", el "margin" y los puntos de las listas:

y flotamos a la izquierda (float: left) los <li> del menú principal (los del submenú no!!):

Como se puede apreciar, el "Item 3" ha dejado de estar junto al "Item 2", y el espacio entre ellos depende de la longitud del texto de los subitems. Para evitar esto, tendremos que sacar el submenú del flujo de elementos, de esta manera no ocupará espacio.

Ahora se puede ver también, que "Subitem 1" y "Subitem 2" no están en una sola linea sino en 2. Para evitar esto añadimos "white-space: nowrap" en los <li> del submenu:


Es necesario que el submenu sólo este visible cuando pasemos el raton por encima de "Item 2". Por ello, deberemos de ocultar el submenú cuando la página web se cargue:

A continuación necesitaremos que el submenú se muestre cuando pasemos el ratón por encima de "Item 2". Para ello hacemos uso del pseudoelemento ":hover".



Podemos añadirle colores de fondo al menú, al submenú y a las letras:



Si nos fijamos, los textos del menú están muy juntos. Para separarlos, podemos añadir "padding" a los "li's".



Problema: el submenú (que recordemos, esta posicionado de manera absoluta con respecto a su <li> contenedor) se monta encima del menú. Para solucionarlo será necesario desplazar el submenú a través de la propiedad "top":


Ahora queremos que al pasar el raton por encima de los "items" aparezca otro color (rojo):


Cosas a añadir:

a) Que cada uno de los subitems contenga un enlace a otra página.

b) Que el submenú aparecezca un poco más a la izquierda (alineado con el lado izquierdo de "Item 2").



Comentarios

Entradas populares de este blog

5. CSS: formatear un documento HTML

34. Java: final, static, constantes, colecciones

29. Android: tipos de layouts