Acordeones Nativos con la Etiqueta details en HTML

Los acordeones son un patrón común en interfaces web para mostrar y ocultar información de manera interactiva. Tradicionalmente, se han implementado con JavaScript y CSS, pero HTML ofrece una alternativa nativa con la etiqueta details, simplificando su uso y mejorando la accesibilidad.

Resultado

Implementación con <details>

El siguiente código muestra cómo usar <details> para crear un conjunto de acordeones sin necesidad de JavaScript:

<div class="container py-5">
	<details name="dev-technologies">
		<summary>JavaScript</summary>
		<p>JavaScript – An essential language for web development, allowing interactivity on websites and running in browsers. It is also used in backend development with Node.js.</p>
	</details>

	<details name="dev-technologies">
		<summary>Python</summary>
		<p>Known for its simple syntax and versatility, it is used in web development, automation, artificial intelligence, data science, and more.</p>
	</details>

	<details name="dev-technologies">
		<summary>Java</summary>
		<p>A widely used object-oriented language for enterprise applications, mobile development (Android), and backend systems.</p>
	</details>

	<details name="dev-technologies">
		<summary>C++</summary>
		<p>A powerful and efficient language used in game development, high-performance software, and operating systems.</p>
	</details>

	<details name="dev-technologies">
		<summary>C# </summary>
		<p>Developed by Microsoft, it is popular for game development with Unity, enterprise applications, and desktop software on Windows.</p>
	</details>
</div>

Estilización con CSS

Podemos mejorar la apariencia de estos acordeones con estilos personalizados:

.container {
	max-width: 500px;
}

details {
	interpolate-size: allow-keywords;
	overflow: hidden;
	* {
		margin: 0;
	}
	summary {
		list-style: none;
		border-bottom: 1px solid currentColor;
		position: relative;
		display: flex;
		align-items: center;
		width: 100%;
		line-height: 1.3;
		padding-block: 1rem;
		&:after {
			flex-shrink: 0;
			width: 1.25rem;
			height: 1.25rem;
			margin-inline-start: auto;
			content: "";
			background-repeat: no-repeat;
			background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000000'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");
			transition: transform 0.2s ease-in-out;
		}
		+* {
			padding-top: 1rem;
		}
	}

	&[open] {
		margin-block-end: 1rem;
		summary {
			&:after {
				transform: rotate(-180deg);
			}
		}
	}
	&::details-content {
		block-size: 0;
		transition: block-size .25s, content-visibility 25s, padding 25s;
		transition-behavior: allow-discrete;
	}
	&:open::details-content {
		block-size: auto;
	}
}

Este CSS:

  • Añade un borde inferior a cada acordeón.
  • Hace que el <summary> sea clickeable y tenga una flecha indicadora.
  • Gira la flecha cuando el acordeón está abierto.

Compatibilidad en Navegadores

La etiqueta details> es compatible con la mayoría de los navegadores modernos, incluyendo Chrome, Edge, Firefox, y Safari. Sin embargo, versiones antiguas de Internet Explorer no la soportan. Se recomienda probar en los navegadores objetivo y, si es necesario, agregar un fallback con JavaScript.

Conclusión

Usar <details> para acordeones es una solución elegante, accesible y sin dependencias de JavaScript. Facilita la implementación y mejora la experiencia del usuario con un comportamiento nativo en los navegadores modernos.

Efecto de Animación en Lettering con CSS

Quiero compartir un efecto visual que anima el espaciado de las letras al interactuar con los enlaces de una página web. Este efecto es sencillo de implementar y añade un toque de dinamismo a tus diseños. Código HTML La estructura HTML consta de varias secciones con un contenedor que incluye…

Conceptos básicos de diseño web

Esta guía reúne algunos principios básicos que todo diseñador web debe tener en cuenta al crear interfaces. No se trata de reglas estrictas, sino de recomendaciones que facilitan la coherencia visual, la accesibilidad y la optimización de un proyecto web. Tamaño del canvas (1400 px de ancho) Un diseño web…