0Pricing
HTML Academy · Lección

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 &lt;img&gt; and &lt;br&gt; do not require
     a closing slash. Both &lt;br&gt; and &lt;br /&gt; 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

  1. aside: contenido complementario
  2. figure y figcaption: una revisión
  3. details y summary: componente de divulgación
  4. Los elementos progress y meter
← Volver a HTML Academy