details y summary: componente de divulgación
Cree componentes nativos para expandir y contraer sin JavaScript
details y summary: componente de divulgación es una lección gratuita de HTML Academy en CoddyKit. Esta es la lección 3 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de HTML Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de HTML Academy incluye 4 lecciones en total.
¿Qué son details y summary?
Los elementos <details> y <summary> crean un widget nativo de mostrar y ocultar, es decir, un componente que se expande y contrae, sin JavaScript:
<details>
<summary>What is HTML?</summary>
<p>HTML (HyperText Markup Language) is the standard markup language
used to create web pages.</p>
</details>Cómo funciona
Comportamiento de la interacción:
- De forma predeterminada, solo se muestra
<summary> - Al hacer clic en summary, se alterna la visibilidad del contenido restante
- De forma predeterminada, aparece un triángulo de expansión en summary
- No se necesita JavaScript
El atributo open
El atributo open expande por adelantado el elemento details:
<details open>
<summary>Installation instructions</summary>
<ol>
<li>Download the installer</li>
<li>Run the installer</li>
<li>Restart your computer</li>
</ol>
</details>
<!-- open is a boolean attribute: presence = expanded -->
<!-- Remove it to start collapsed -->Crear una sección de preguntas frecuentes
Las secciones de preguntas frecuentes son un caso de uso perfecto:
<h2>Frequently Asked Questions</h2>
<details>
<summary>Is HTML5 a programming language?</summary>
<p>No. HTML5 is a markup language that defines the structure and meaning
of web content. Programming languages like JavaScript add logic and behavior.</p>
</details>
<details>
<summary>Do I need to close void elements?</summary>
<p>In HTML5, void elements like <img> and <br> do not require
a closing slash. Both <br> and <br /> are valid.</p>
</details>Aplicar estilos a details y summary
Personalice su apariencia:
details {
border: 1px solid #e2e8f0;
border-radius: 0.5rem;
padding: 0.75rem 1rem;
margin-bottom: 0.5rem;
}
summary {
font-weight: 600;
cursor: pointer;
list-style: none; /* remove default triangle */
}
summary::before {
content: '▶ '; /* custom arrow */
}
details[open] > summary::before {
content: '▼ '; /* rotate when open */
}Eliminar el triángulo predeterminado
El triángulo de expansión se aplica mediante list-style:
/* Remove the default arrow: */
summary {
list-style: none;
}
/* Firefox: */
summary::-webkit-details-marker {
display: none;
}
/* Then add a custom indicator: */
summary::after {
content: '+';
float: right;
}
details[open] summary::after {
content: '−';
}Evento toggle
Escuche la apertura y el cierre con el evento toggle:
const details = document.querySelector('details');
details.addEventListener('toggle', () => {
if (details.open) {
console.log('Details opened');
// Track analytics, load content, etc.
} else {
console.log('Details closed');
}
});Acordeón con details
Construya un acordeón básico: solo un panel abierto a la vez:
/* Pure CSS accordion using details: */
/* Each item is a details element */
/* For exclusive open, use JavaScript: */
const allDetails = document.querySelectorAll('details');
allDetails.forEach(d => {
d.addEventListener('toggle', () => {
if (d.open) {
allDetails.forEach(other => {
if (other !== d) other.removeAttribute('open');
});
}
});
});Accesibilidad de details y summary
Funciones de accesibilidad integradas:
- summary recibe el foco del teclado y se puede activar con Intro o la barra espaciadora
- Los lectores de pantalla anuncian el texto de summary y el estado de expansión
- El contenido oculto está en el DOM, pero se anuncia como oculto hasta que se expande
Atributo name para un acordeón exclusivo
HTML 2025 añade name a details para crear un acordeón exclusivo nativo:
<details name="faq">
<summary>Question 1</summary>
<p>Answer 1...</p>
</details>
<details name="faq">
<summary>Question 2</summary>
<p>Answer 2...</p>
</details>
<!-- details with the same name act as a group -->
<!-- Opening one closes the others automatically -->
<!-- Supported in Chrome 120+ and Firefox 130+ -->Carga diferida de contenido con toggle
Cargue el contenido solo cuando se abra details:
<details id="advanced">
<summary>Load advanced settings...</summary>
<div id="advanced-content">Loading...</div>
</details>
<script>
const d = document.getElementById('advanced');
d.addEventListener('toggle', async () => {
if (d.open) {
const res = await fetch('/api/settings');
const html = await res.text();
document.getElementById('advanced-content').innerHTML = html;
d.removeEventListener('toggle', arguments.callee);
}
}, { once: true });
</script>Comprobación rápida
¿Qué elemento proporciona el texto del activador que siempre está visible en un widget de mostrar y ocultar de details?
Recapitulación: detalles y resumen
Aspectos esenciales del widget de disclosure:
<details>+<summary>— expansión y contracción nativas, sin necesidad de JavaScript- Atributo
open— se muestra expandido inicialmente - Evento toggle — permite reaccionar a la apertura y el cierre
- Personalícelo con CSS; elimine el triángulo predeterminado con list-style: none
- Atributo
name— acordeón exclusivo (Chrome 120+)
Preguntas frecuentes
¿La lección «details y summary: componente de divulgación» es gratis?
Sí — el texto completo de «details y summary: componente de divulgación» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de HTML Academy, actualiza a CoddyKit PRO. El curso de HTML Academy incluye 4 lecciones en total.
¿Qué aprenderé en «details y summary: componente de divulgación»?
Cree componentes nativos para expandir y contraer sin JavaScript Practicas HTML Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar HTML Academy?
No se requiere experiencia previa. HTML Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 3 de 4.
¿Cuánto tiempo toma la lección «details y summary: componente de divulgación»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de HTML Academy?
Sí. Cada lección de HTML Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- aside: contenido complementario
- figure y figcaption: una revisión
- details y summary: componente de divulgación
- Los elementos progress y meter