La Etiqueta SUMMARY

Se utiliza para crear un widget de divulgación (acordeón o sección colapsable). Proporciona un título o resumen que los usuarios pueden hacer clic para expandir o contraer contenido adicional.
La etiqueta <summary>
en HTML se utiliza junto con <details>
para crear un widget de divulgación (acordeón o sección colapsable). Proporciona un título o resumen que los usuarios pueden hacer clic para expandir o contraer contenido adicional. Es ideal para organizar información de manera compacta, como preguntas frecuentes (FAQ), menús desplegables o contenido opcional. Aquí te explicamos cómo implementarla correctamente.
Sintaxis básica
La estructura básica combina <details>
y <summary>
:
<details> <summary>Título o resumen</summary> <!-- Contenido oculto que se muestra al hacer clic --> <p>Contenido adicional...</p> </details>
Ejemplo:
<details> <summary>¿Qué es HTML?</summary> <p>HTML es el lenguaje estándar para crear páginas web.</p> </details>
Resultado:
¿Qué es HTML?
HTML es el lenguaje estándar para crear páginas web.
Atributos clave
open
(en <details>
)
Muestra el contenido por defecto sin necesidad de hacer clic:
<details open> <summary>Ver detalles</summary> <p>Contenido visible inicialmente.</p> </details>
Casos de uso comunes
a) Preguntas frecuentes (FAQ)
<details> <summary>¿Cómo restablezco mi contraseña?</summary> <p>Visita la página de recuperación e ingresa tu correo electrónico.</p> </details>
b) Menús desplegables
<details> <summary>Opciones avanzadas</summary> <ul> <li>Configuración 1</li> <li>Configuración 2</li> </ul> </details>
c) Spoilers en artículos
<details> <summary>Advertencia: Contiene spoilers</summary> <p>El protagonista muere al final.</p> </details>
d) Código colapsable
<details> <summary>Mostrar código</summary> <pre><code>console.log("Hola, mundo!");</code></pre> </details>
Personalización con CSS
a) Estilo básico del <summary>
summary { cursor: pointer; /* Cursor tipo enlace */ padding: 10px; background: #f0f0f0; border: 1px solid #ddd; border-radius: 5px; } /* Estilo al enfocar (accesibilidad) */ summary:focus { outline: 2px solid #007bff; } /* Icono personalizado (flecha) */ summary::marker { content: "▶️ "; /* Emoji o texto */ } details[open] summary::marker { content: "???? "; }
b) Animación al expandir
details[open] summary { margin-bottom: 10px; border-bottom-left-radius: 0; border-bottom-right-radius: 0; } details > *:not(summary) { animation: fadeIn 0.3s ease-in; } @keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } }
Accesibilidad
Roles ARIA: <details>
y <summary>
ya tienen roles semánticos (role="group"
y role="button"
), pero puedes reforzarlos:
<details role="group"> <summary role="button" aria-expanded="false">Título</summary> </details>
Teclado: Los usuarios pueden navegar con Tab
y activar con Enter
o Espacio
.
Lectores de pantalla: Anuncian el estado (expandido/contraído) automáticamente.
Diferencias con <div>
+ JavaScript
<details> + <summary> |
<div> + JavaScript |
---|---|
Funcionalidad nativa sin scripts. | Requiere código personalizado. |
Accesibilidad integrada. | Necesita roles ARIA manuales. |
Menos personalización en algunos navegadores. | Mayor control visual. |
Ejemplo completo
<!DOCTYPE html> <html lang="es"> <head> <style> details { margin: 10px 0; width: 80%; max-width: 600px; } summary { background: #007bff; color: white; padding: 12px; border-radius: 5px; cursor: pointer; list-style: none; /* Oculta el marcador por defecto */ } summary::-webkit-details-marker { display: none; /* Oculta el marcador en Chrome */ } summary::before { content: "▶"; margin-right: 10px; } details[open] summary::before { content: "▼"; } details[open] { background: #f8f9fa; border-radius: 5px; box-shadow: 0 2px 5px rgba(0,0,0,0.1); } details p { padding: 15px; margin: 0; } </style> </head> <body> <h2>Preguntas frecuentes</h2> <details> <summary>¿Cómo me registro?</summary> <p>Dirígete a la página de registro y completa el formulario.</p> </details> <details> <summary>¿Cuáles son los métodos de pago?</summary> <p>Aceptamos tarjetas de crédito, PayPal y transferencias bancarias.</p> </details> </body> </html>
Errores comunes
Olvidar cerrar <details>
:
<details> <summary>Título</summary> <p>Contenido...
Usar <summary>
fuera de <details>
:
<summary>Título</summary> <!-- Sin details -->
Conclusión
La etiqueta <summary>
es una herramienta poderosa para:
-
Organizar contenido de forma interactiva sin JavaScript.
-
Mejorar la experiencia de usuario con secciones colapsables.
-
Mantener la accesibilidad y semántica HTML.
Recuerda:
-
Usa CSS para personalizar el diseño.
-
Aprovecha su funcionalidad nativa en lugar de soluciones complejas.
-
Prueba en diferentes navegadores (soporte casi universal excepto IE).
¡Incorpora <summary>
en tus proyectos para crear interfaces limpias y eficientes!