css

Cómo crear un menú desplegable utilizando solo HTML y CSS

Last updated: 30.09.2025
Views: 254

En un artículo anterior, vimos cómo crear un menú desplegable con JavaScript (jQuery). En este artículo, veremos cómo crear un menú desplegable usando solo HTML y CSS. Esta implementación no siempre es adecuada para todos, pero en algunos casos puede ser útil. Nuestro menú será horizontal. Los elementos del menú tendrán un ancho fijo. Establezcamos position: relative para todos los elementos de la lista. Y position: absolute para el menú anidado. El submenú aparecerá al pasar el ratón sobre el elemento padre. Toda la mecánica se logra gracias a la pseudoclase :hover. Nuestro menú contendrá varios niveles de anidación.

Video

HTML

<ul class="menu">
	<li>
		<a href="#">Item 1</a>
		<ul>
			<li><a href="#">Subitem 1-1</a></li>
			<li>
				<a href="#">Subitem 1-2</a>
				<ul>
					<li><a href="#">Subitem 1-2-1</a></li>
					<li><a href="#">Subitem 1-2-2</a></li>
					<li><a href="#">Subitem 1-2-3 </a></li>
				</ul>
			</li>
			<li>
				<a href="#">Subitem 1-3</a>
				<ul>
					<li><a href="#">Subitem 1-3-1</a></li>
					<li><a href="#">Subitem 1-3-2</a></li>
					<li><a href="#">Subitem 1-3-3</a></li>
				</ul>
			</li>
		</ul>
	</li>
	<li>
		<a href="#">Item 2</a>
		<ul>
			<li>
				<a href="#">Subitem 2-1</a>
				<ul>
					<li><a href="#">Subitem 2-1-1</a></li>
					<li><a href="#">Subitem 2-1-2</a></li>
					<li><a href="#">Subitem 2-1-3</a></li>
				</ul>
			</li>
			<li><a href="#">Subitem 2-2</a></li>
			<li><a href="#">Subitem 2-3</a></li>
		</ul>
	</li>
	<li><a href="#">Item 3</a></li>
	<li><a href="#">Item 4</a></li>
</ul>

CSS

.menu {
	display: flex;
}

.menu li {
	width: 200px;
	list-style: none;
	position: relative;
}

.menu a {
	display: block;
	color: #fff;
	background: #07355e;
	text-decoration: none;
	text-align: center;
	height: 40px;
	line-height: 40px;
	transition: all 0.5s;
}

.menu a:hover {
	opacity: 0.8;
}

.menu ul {
	position: absolute;
	left: 0;
	top: 100%;
	display: none;
	padding: 0;
}

.menu li:hover > ul {
	display: block;
}

.menu ul ul {
	top: 0;
	left: 100%;
}

Puedes ver un ejemplo de cómo podría verse y funcionar el menú en Codepen: https://codepen.io/igorrybalko/pen/EaaopVO

author
Autor: Igor Rybalko
He estado trabajando como desarrollador front-end desde 2014. Mi principal pila tecnológica es Vue.js y WordPress.

Publicaciones similares:

Leave a Reply

Your email address will not be published. Required fields are marked *