Cómo crear un menú con submenú simple con CSS

Vamos a realizar un menú con submenú con CSS, un elemento muy usado y útil para todos aquellos que quieren iniciarse en la programación web. Primeramente vamos a mostrar el resultado final en CodePen antes de pasarnos a explicar como se realiza este menú paso por paso:

See the Pen Menú simple con CSS by Sergio Clebal (@sukafe) on CodePen.dark

Como vemos es un simple menú con dos submenús que suelen ser lo máximo cuando realizamos un <nav> de esta forma. Aunque sea un ejemplo simple, esta es la base para hacer muy buenos menús en los que sin utilizar JavaScript tengamos un resultado muy bueno.

HTML

<nav>
<ul id="menu">
<li>Inicio</li>
<li>Nuestra labor</li>
<li>Quienes Somos</li>
<li id="sub-menu">Productos
<ul>
<li>Naranjas</li>
<li>Sandias</li>
<li>Melones</li>
<li>Manzanas
<ul>
<li>Bonitas</li>
<li>Feas</li>
</ul>
</li>
</li>
<li>Contacto</li>
</ul>
</nav>

El código HTML es bastante simple. Podemos ver primero la etiqueta nav, etiqueta contenedora del menú para navegar entre las distintas páginas de nuestra web, la cual contiene una lista no ordenada ul con una serie de elementos li. Para crear el submenú, lo que haremos será en una de la etiquetas li, antes de cerrarla crearemos de nuevo una lista no ordenada que será el nuevo submenú y a partir de ahí podemos añadir nuevos elementos.

CSS

* {
padding: 0;
margin: 0;
font-family: 'Roboto', sans-serif;
}

#menu {
background-color: #E53935;
height: 35px;
width: 100%;
}

#menu li {
height: 35px;
background-color: #E53935;
transition: 0.25s;
padding-left: 10px;
padding-right: 10px;
vertical-align: middle;
display: table-cell;
color: #fff;
list-style: none;
cursor: pointer;
}

#menu li:hover {
background: #D32F2F;
}

#menu ul {
display: none;
position: absolute;
top: 35px;
background: white;
color: #fff;
margin: 0;
box-shadow: 1px 1px 1px black;
}

#menu ul li {
display: table-cell;
vertical-align: middle;
color: #fff;
padding: 5px 10px 5px 10px;
}

#menu li:hover ul ul,
#menu li:hover ul ul ul {
display: none;
}

#menu li:hover ul,
#menu ul li:hover ul,
#menu ul ul li:hover ul {
display: table-cell;
margin-left: -10px;
}

El código CSS es un código sencillo que está preparado para tener hasta tres submenú y además funciona en distintos navegadores. Si quisiéramos añadir soporte para más submeú, tendríamos que añadir una linea más #menu li:hover ul ul ul como esta en su correspondiente lugar para que el nuevo nivel de submenú este no visible, y además añadir una nueva linea como la siguiente #menu ul ul li:hover ul  con un ul más después del :hover.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *