HTML Academy · Lección

Crear un acordeón con PE

Cree un acordeón que funcione sin JavaScript y mejórelo después

Lección 4 de 413 pasos

Crear un acordeón con PE es una lección gratuita de HTML Academy en CoddyKit. Esta es la lección 4 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.

Objetivo: un acordeón funcional sin JS

La versión con PE de un acordeón usa únicamente HTML: el par de elementos nativos <details>/<summary>. Haga clic en summary para alternar el panel. Funciona sin CSS, sin JS y sin framework: forma parte de HTML.

<details>
  <summary>What is HTML?</summary>
  <p>HTML is the markup language of the web.</p>
</details>

Accesibilidad incorporada

<summary> es un botón que puede recibir el foco y activarse con el teclado (Enter/Space alterna su estado). Los lectores de pantalla anuncian el estado expandido/contraído. Dos elementos HTML proporcionan lo que a un acordeón personalizado de React puede llevarle decenas de líneas de ARIA y gestión de eventos conseguir.

Aplicar estilos con CSS

Estilice el triángulo de expansión, el relleno del panel y las transiciones con CSS convencional. El atributo open refleja el estado, por lo que details[open] summary { color: blue; } se aplica solo cuando está expandido. No se necesita JS para mejorar el aspecto visual.

details { border-bottom: 1px solid #ccc; padding: 8px 0; }
summary { font-weight: bold; cursor: pointer; }
details[open] summary { color: var(--accent); }

Animar la apertura y el cierre

La apertura y el cierre predeterminados son instantáneos. Puede animarlos mediante una transición de content-visibility o mediante JS que mida la altura del panel y anime max-height. En casos sencillos, el cambio abrupto es aceptable; la animación es una mejora progresiva aplicada con CSS+JS.

Mejorar con JavaScript

JS puede añadir funciones adicionales: cerrar otros acordeones cuando se abre uno (modo de apertura única), conservar el estado abierto en localStorage, animar la transición o registrar mediante análisis qué entradas están expandidas. Cada mejora es puramente aditiva.

document.querySelectorAll("details").forEach((d) => {
  d.addEventListener("toggle", () => {
    if (d.open) {
      document.querySelectorAll("details").forEach((o) => {
        if (o !== d) o.removeAttribute("open");
      });
    }
  });
});

El evento toggle

<details> dispara un evento toggle cada vez que cambia su estado open. Úselo para reaccionar a la expansión del usuario sin volver a configurar controladores de clic. Es compatible tanto con clics del ratón como con la activación mediante el teclado.

Renderizar el estado en el servidor

Para renderizar un acordeón inicialmente abierto, establezca el atributo open en el servidor: <details open>. El estado está en el HTML, disponible para los rastreadores y para los usuarios con conexiones lentas antes de que se ejecute JS.

Cuando la funcionalidad integrada no basta

Si el diseño requiere un icono personalizado de expansión/contracción, una revelación animada o un panel con varias columnas, construya una versión personalizada, pero use <details>/<summary> como estructura subyacente si es posible. Añada ARIA solo si no puede utilizar los elementos nativos en absoluto.

Verificación sin JS

Desactive JavaScript en DevTools y compruebe que el acordeón sigue funcionando: haga clic en summary, el panel cambia, el orden del foco sigue siendo lógico y el teclado lo activa. Si algo falla, JS no es una mejora, sino un requisito, lo que contradice el PE.

Apertura única solo con CSS

Para permitir que solo haya un elemento abierto a la vez, como en los botones de opción, sin JS, use el atributo name en <details> (compatible con Chrome/Safari): todos los elementos <details name="faq"> comparten el estado, de modo que al abrir uno se cierran los demás. Es un patrón de HTML puro que imita los botones de opción.

Migrar desde un acordeón solo de JS

Sustituya divs+JS por <details>/<summary> y conserve las clases CSS para aplicar estilos. El resultado es un HTML más breve, sin dependencia de JS, con mejor accesibilidad y contenido indexable. La mayoría de los acordeones de JS pueden migrarse al PE con cambios mínimos visibles para el usuario.

Comprobación de conocimientos

¿Qué par de elementos HTML proporciona un acordeón completamente funcional sin JavaScript?

Resumen

Un acordeón con PE usa <details>/<summary> nativos como base: es totalmente accesible y se controla mediante el teclado sin JS. Añada CSS para los estilos visuales y, opcionalmente, JS para las animaciones o el comportamiento de apertura única. Compruebe, desactivando JS, que la funcionalidad básica sigue funcionando. El nuevo atributo name incluso permite un modo de apertura única solo con CSS.

Gratis para empezar

Aprende HTML con un tutor de IA — gratis

Escribe y ejecuta código real en tu navegador, obtén ayuda instantánea de un tutor de IA disponible 24/7 y continúa donde lo dejaste en la web o en la aplicación.

Cursos
40
Lecciones
159

Preguntas frecuentes

¿La lección «Crear un acordeón con PE» es gratis?

Sí — el texto completo de «Crear un acordeón con PE» 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 «Crear un acordeón con PE»?

Cree un acordeón que funcione sin JavaScript y mejórelo después 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 4 de 4.

¿Cuánto tiempo toma la lección «Crear un acordeón con PE»?

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. La filosofía PE: empezar por HTML
  2. Detección de características frente a detección del navegador
  3. Degradación gradual frente a mejora progresiva
  4. Crear un acordeón con PE
← Volver a HTML Academy