Olá, Miquellysson.
Eu faria algo assim:
HTML
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Exemplo de acordeão</title>
<link rel="stylesheet" href="reset.css">
<link rel="stylesheet" href="acordeao.css">
</head>
<body>
<ul class="acordeao">
<li class="acordeao-item acordeao-item_isActive">
<h1 class="acordeao-item-titulo">Primeiro</h1>
<p class="acordeao-item-conteudo">Lorem ipsum dolor sit amet, consectetur adipisicing elit. Saepe, ut.</p>
</li>
<li class="acordeao-item">
<h1 class="acordeao-item-titulo">Segundo</h1>
<p class="acordeao-item-conteudo">Lorem ipsum dolor sit amet, consectetur adipisicing elit. Saepe, ut.</p>
</li>
<li class="acordeao-item">
<h1 class="acordeao-item-titulo">Terceiro</h1>
<p class="acordeao-item-conteudo">Lorem ipsum dolor sit amet, consectetur adipisicing elit. Saepe, ut.</p>
</li>
</ul>
<script src="acordeao.js"></script>
</body>
</html>
reset.css
* {
margin: 0;
padding: 0;
border: none;
}
ul, ol,li {
list-style: none;
}
acordeao.css
.acordeao {
width: 300px;
color: #ecf0f1;
}
.acordeao-item {
margin-bottom: 20px;
}
.acordeao-item:nth-child(even) {
background-color: #9b59b6;
}
.acordeao-item:nth-child(odd) {
background-color: #3498db;
}
.acordeao-item-titulo {
cursor: pointer;
padding: 20px 30px;
}
.acordeao-item-conteudo {
overflow-y: hidden;
max-height: 0;
padding-left: 30px;
padding-right: 30px;
transition: max-height 400ms linear, padding-bottom 200ms linear;
}
.acordeao-item_isActive .acordeao-item-titulo {
padding-bottom: 0;
}
.acordeao-item_isActive .acordeao-item-conteudo {
padding-bottom: 20px;
max-height: 200px;
}
acordeao.js
(function () {
'use strict'
var $acordeao = document.querySelector('.acordeao')
$acordeao.addEventListener('click', function(event) {
var $this = this
var $origin = event.target
if($origin.classList.contains('acordeao-item-titulo')) {
document.querySelector('.acordeao-item_isActive').classList.remove('acordeao-item_isActive')
$origin.parentNode.classList.add('acordeao-item_isActive')
}
})
})()
Se ficar alguma dúvida enquanto estiver lendo o código. Por favor, não deixe de perguntar ;-)