Acordeón (expandir/contraer)
Parte de la sección JavaScript in Action del Journey de HTML de Coddy — lección 2 de 27.
Un acordeón es un componente de interfaz de usuario (UI) que permite expandir y contraer secciones de contenido. A menudo se utiliza para preguntas frecuentes (haz clic en una pregunta → muestra la respuesta, haz clic de nuevo → ocúltala).
La idea es sencilla: cuando haces clic en un encabezado, JavaScript alterna la visibilidad del contenido debajo de él.
Puntos clave:
- Tenemos un botón y un elemento de contenido que está oculto por defecto (
display: none).
- Al hacer clic en el botón se activa la función y se pasa el ID del elemento que debe abrirse.
- Dentro de la función:
- Si el elemento ya se está mostrando (
display: block), lo ocultamos (display: none). - De lo contrario, lo mostramos (
display: block).
- Si el elemento ya se está mostrando (
<button onclick="toggle('p1')">Question 1</button>
<div id="p1" style="display:none;">Answer 1</div>
<script>
function toggle(id) {
const element = document.getElementById(id);
if (element.style.display === "block") {
element.style.display = "none";
} else {
element.style.display = "block";
}
}
</script>Desafío
FácilEn este momento, nuestro acordeón tiene tres preguntas. Tu tarea es añadir una cuarta.
Pasos:
- Crea un nuevo
<button>con el texto: Should I add milk or drink it black? - Enlázalo a un nuevo panel llamando a la función
onclick="togglePanel('q4')" - Crea un
<div>con elid="q4"y la clasepanel. - Dentro del div, escribe la respuesta:
It depends on your taste! Black coffee has stronger flavor, while milk softens the bitterness.
Pruébalo tú mismo
<!DOCTYPE html>
<html>
<head>
<title>FAQ Accordion</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<h1>FAQ Coffee Lovers</h1>
<button class="accordion" onclick="togglePanel('q1')">What is the best way to brew coffee at home?</button>
<div id="q1" class="panel">
The French press and pour-over methods are popular for making rich, flavorful coffee at home.
</div>
<button class="accordion" onclick="togglePanel('q2')">Where do coffee beans come from?</button>
<div id="q2" class="panel">
Most coffee beans are grown in countries around the equator, such as Brazil, Ethiopia, and Colombia.
</div>
<button class="accordion" onclick="togglePanel('q3')">How late can I drink coffee?</button>
<div id="q3" class="panel">
It's best to avoid coffee 6 hours before bedtime, since caffeine can affect your sleep.
</div>
<script src="script.js"></script>
</body>
</html>Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de JavaScript in Action
1Interactividad/Componentes de UI
PestañasAcordeón (expandir/contraer)Modal (abrir/cerrar)Menú desplegable7Animaciones y efectos
Transiciones CSSAnimar elementos al hacer scrollAnimaciones al hacer clic en botones