Acordeón con jQuery

jQuery

En este tutorial vamos a ver cómo puedes crear un efecto tipo acordeón con jQuery. En caso de que no sepas lo que es jQuery o si no sabes utilizarlo, consulta primero el tutorial de introducción a jQuery.

Se denomina efecto acordeón al efecto que incluye una serie de cabeceras que abren y cierran una serie de paneles con contenido. Cada cabecera de nuestro acordeón abrirá o colapsará su respectivo panel. Existen dos modalidades, una en la que cuando haces clic en una cabecera simplemente se abre su respectivo panel y otra en la que también se cierran todos los demás. En este ejemplo veremos cómo crear la primera modalidad.

Antes de comenzar, asegúrate de incluir el script jQuery en tu proyecto.

Versión simplificada

Vamos a empezar agregando el siguiente código HTML, en el que agregamos un elemento con la clase .acordeon que incluye varios pares de cabeceras .acordeon-cabecera y paneles de contenido .acordeon-contenido:

<h1>Acordeón</h1>

<div class="acordeon">
  <div class="acordeon-cabecera">Cabecera 1</div>
  <div class="acordeon-contenido">Lorem ipsum dolor sit amet consectetur adipiscing elit, id nibh nulla enim dis tempor. Eu ultrices interdum vivamus.</div>

  <div class="acordeon-cabecera">Cabecera 2</div>
  <div class="acordeon-contenido">Ultrices enim potenti hac proin egestas imperdiet placerat luctus sem sapien et sed, ante conubia malesuada.</div>

  <div class="acordeon-cabecera">Cabecera 3</div>
  <div class="acordeon-contenido">Dis tempor blandit convallis morbi dictumst tempus non fermentum, ligula suscipit curabitur tellus at dignissim orci.</div>
</div>

Seguidamente, vamos a agregar el código JavaScript que hará que el acordeón funcione. Lo único que hacemos es ejecutar una función cuando se haga clic en alguna cebecera. En dicha función agregamos o eliminamos la clase .active de la cabecera mediante el método toggleClass("active"). de esta forma podemos aplicar ciertos estilos a las cebeceras que se encuentren activas.

Luego seleccionamos el siguiente elemento, que será el contenido de cada panel, mediante el método next() y mostramos y ocultamos el panel mediante el método slideToggle():

$(".acordeon").on("click", ".acordeon-cabecera", function() {
 	$(this).toggleClass("active").next().slideToggle();
 });

Vamos a agregar también algunos estilos CSS muy básicos:

.acordeon-cabecera {
  cursor: pointer;
}

.acordeon-contenido {
  display: none;
}

.acordeon {
  font-weight: 800;
}

Y con esto ya estaría listo. Puedes ver el resultado en funcionamiento aquí.

Versión avanzada

Vamos a mejorar algo el aspecto de nuestro acordeón. Para ello bastará con que agreguemos algunos estilos CSS:

html {
	min-height: 100%;
	font-family: 'Nunito', sans-serif;
}

body {
	background: #7db4fc;
	line-height: 1.5;
}

h1 {
	font-weight: 200;
	font-size: 3rem;
	color: white;
	text-align: center;
}

.acordeon {
	max-width: 400px;
	background: white;
	margin: 0 auto;
  box-shadow: 0 1px 3px rgba(0,0,0,0.12), 0 1px 2px rgba(0,0,0,0.24);
}

.acordeon-cabecera {
	border-bottom: 1px solid #DDE0E7;
	color: #222222;
	cursor: pointer;
	font-weight: 600;
	padding: 1.5rem;
  background:#f6f7f9;
}

.acordeon-cabecera:hover {
	background: #fdf8d7;
}

.acordeon-cabecera.active {
	background-color: #fdf8d7;
}

.acordeon-contenido {
	display: none;
	border-bottom: 1px solid #DDE0E7;
	background: #fff;
	padding: 1.4rem;
	color: #4a5666;
}

Y con esto ya estaría listo. Puedes ver el resultado en funcionamiento aquí.


Avatar de Edu Lazaro

Edu Lázaro: Ingeniero técnico en informática, actualmente trabajo como desarrollador web y programador de videojuegos.

👋 Hola! Soy Edu, me encanta crear cosas y he redactado esta guía. Si te ha resultado útil, el mayor favor que me podrías hacer es el de compatirla en Twitter 😊

Si quieres conocer mis proyectos, sígueme en Twitter.

1 comentario en “Acordeón con jQuery

  1. Hola! Tengo una duda. ¿Se pueden crear dos paneles de acordeones en una misma página web solo realizando uno, duplicarlo y cambiarle la información? ¿O hay que cambiar algunos datos para que funcione? He hecho esto, y el segundo panel de acordeones funciona, pero el primero no. Espero su respuesta. Muchas gracias.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

“- Hey, Doc. No tenemos suficiente carretera para ir a 140/h km. - ¿Carretera? A donde vamos, no necesitaremos carreteras.”