Menú horizontal con submenú desplegable horizontal mediante CSS

Menú horizontal con submenú desplegable horizontal mediante CSS

Print Friendly, PDF & Email
Menú horizontal con submenú desplegable horizontal mediante CSS
Valora esta entrada
Esta publicación es una variante de la creación de un menú horizontal con desplegable vertical.

Las siguientes lecturas te pueden resultar de interés:

  1. Ejemplo de creación de un menú vertical con desplegable horizontal.
  2. Ejemplo de creación de un menú horizontal con desplegable vertical.

Para mi gusto (y es una opinión sesgada) este ejemplo es de más dificultad que los anteriores.

El resultado que queremos obtener es algo parecido a la imagen siguiente:

menu horizontal submenu horizontal

El código html usado es el siguiente:

<header>
        <nav>
        <ul>
        <li><a href="#">Inicio</a></li>
        <li><a href="#">Quiénes somos</a>
            <ul><li><a href="">Historia</a></li>
            <li><a href="">Prensa</a></li></ul>
            </li>
        <li><a href="#">Servicios</a>
            <ul><li><a href="">Servicio 1</a></li>
            <li><a href="">Servicio 2</a></li>
            <li><a href="">Servicio 3</a></li>
            <li><a href="">Servicio 4</a></li></ul>
            </li>
        <li><a href="#">Blog</a></li>
        <li><a href="#">Contacto</a></li>
        </ul>
        </nav>
    </header>

Estrategia combinación inline-block y posicionamiento absoluto

*{margin:0;padding:0;box-sizing:border-box;font-size:0;}  

header{
    width:100%;
    max-width:900px;
    margin:auto;
            }
nav{
    position:relative;
    top:100px;
    margin:auto;

}
        
nav a{
    text-decoration:none;
    color:inherit;
    font-size:14px;
}
            
nav li{
    display:inline-block;
    width:150px;
    height:30px;
    padding:5px 10px;
    border:1px solid #000;
    text-align:center;
    background-color:#000;
    color:#fff;
}
            
nav li:hover{
    background-color:#fff;
    color:#000;
}
            
nav li>ul{
position:absolute;
left:0px;
top:30px;
display:block;
}
            
nav li>ul{
    display:none;
}            

nav li:hover>ul{
    display:block;
}

La estrategia usada para crear un menú horizontal es asignar a los elementos <li> la propiedad display:inline-block; 

Si los elementos <ul> son suficientemente anchos los <li> anidados se apilarán unos al lado de otro.

La dificultad está en conseguir que los <ul> anidados dentro de un <li> no queden limitados por el ancho disponible del <li> que los anida.

Para ellos damos un posicionamiento relativo al <nav> y un posicionamiento absoluto a los <ul> que estén dentro de un <li> con el desplazamiento que deseemos. Más concretamente la altura exacta definida para los elementos <li>. Y les damos display:block; para asegurarnos que como elemento bloque ocupen el 100% del ancho disponible. Ahora los <li> ya tienen espacio para apilarse.

Una vez conseguido este efecto el resto es jugar con :hover y con display:none; igual que se hace en las lecturas recomendadas al inicio de este escrito.

¡Hola!

Querido lector,

Conseguido este ejemplo el ejercicio de dificultad creciente sería conseguir un tercer nivel desplegable.

¡Si te ha gustado este contenido te animo a seguirme en mi perfil de empresa de Linkedin!

Entradas relacionadas:

Posicionamiento mediante CSS de etiquetas html (cajas) en un documento web
- 106
Ejemplos prácticos y visuales dónde se muestran los posicionamientos static | absolute | relative | fixed | sticky. Incluye código CSS y HTML
Creación de un menú horizontal con sub menú desplegable mediante CSS
- 81
Código CSS explicado paso a paso para crear un menú horizontal con un sub menú vertical. Apuntes de alumno IFCD0110 tutorial CSS.
La propiedad z-index
- 40
Resumen y ejemplo de aplicación de la propiedad Z-index. Asignatura CSS curso confección y publicación de páginas web.
Sintaxis CSS básica. Cómo se escribe el CSS.
- 181
Escribir CSS es fácil. Es un lenguaje que no tiene sorpresas. En esta entrada se explica como se escribe una instrucción CSS.
Box Sizing, como modificar el modelo de cajas convencional
- 136
¿Se rompen las columnas de tu web al redimensionar el ancho de tu navegador? En esta publicación hablamos de box-sizing con un ejemplo real.
Guía rápida para crear botones personalizados con CSS
- 40
Hacemos un repaso rápido a :hover :active y las propiedades box-shadow, border-radius, cursor y background para estilizar botones.
Ejemplo de centrado horizontal de una caja con CSS
- 334
Ejemplo de como centrar horizontalmente una caja o contenedor en una página web y mediante CSS.
Diferencia entre visibility:hidden; y display:none;
- 81
Código css para ilustrar la diferencia entre el uso de visibility:hidden; y display:none; . Incluye ejemplo visual.
Unidades de medida absolutas y relativas en CSS
- 232
¿Como se define el tamaño de cada uno de los elementos de una página web? En CSS podemos encontrar medidas absolutas y relativas. Veamos a que equivale cada una.
Ejemplo de creación de menú horizontal en CSS: inline-block y float
- 131
Ejemplo dónde se plantean dos estrategias distintas para dar estilos a un en menú horizontal. La primera con inline-block. La segunda con float.
Francesc Ricart
hola@francescricart.com

Soy un ingeniero industrial a quién le apasiona aprender y enseñar. En el mundo del marketing online he encontrado una de mis pasiones. Ejerzo como docente ocupacional y privado para empresas. Y también hago consultoría web para PIMES, autónomos y otros emprendedores como yo. Ayudo a las empresas en cualquier temática relacionada con su presencia digital y herramientas web. Aunque mi especialidad es el posicionamiento en buscadores (SEO). A nivel de formación lo que más feliz me hace es que un alumno haga de mi pasión una forma de vida y le ayude a encontrar trabajo. A nivel de negocios ayudo a empresarios a desenvolverse con soltura en el mundo digital y les animo a hacer cada vez más cosas que nunca hubieran imaginado que ellos también podían hacer. En este camino les ayudo haciendo todo aquello dónde ellos no llegan y crecemos juntos. Encontraréis más acerca de mi en la página sobre mi

No hay comentarios

Escribir un comentario

  Acepto la política de privacidad

Responsable: FRANCESC RICART MUÑOZ.

Finalidad: Gestionar los comentarios que realizas en este blog.

Destinatarios: No se cederán datos a terceros, salvo obligación legal.

Derechos: Tienes derecho a acceder, rectificar y suprimir los datos, así como otros derechos, como se explica en la política de privacidad.