Acordeão em JavaScript

Agora vamos implementar um acordeão. Ele é semelhante a abas viradas de lado. Além disso, no acordeão, você pode fechar a aba atual se clicar no link ativo.

Aqui está um exemplo:

Estude também a marcação na qual vamos resolver a tarefa:

html<div id="parent">
  <div class="tab active">
    <div class="link">
      <a href="#" >aba 1</a>
    </div>
    <div class="text">
      texto da aba 1
    </div>
  </div>
  <div class="tab">
    <div class="link">
      <a href="#" >aba 2</a>
    </div>
    <div class="text">
      texto da aba 2
    </div>
  </div>
  <div class="tab">
    <div class="link">
      <a href="#" >aba 3</a>
    </div>
    <div class="text">
      texto da aba 3
    </div>
  </div>
</div>
css#parent {
  margin: 0 auto;
  width: 400px;
}
.tab {
  margin-bottom: 10px;
}

.tab .link a {
  display: block;
  padding: 10px;
  color: black;
  text-decoration: none;
  text-align: center;
  background: #f8f8f8;
  border: 1px solid gray;
}
.tab .link:hover a {
  background: #f2f2f2;
}

.tab:not(.active) .text {
  display: none;
}
.tab .text {
  border: 1px dashed gray;
  border-top: none;
  
  padding: 10px;
  height: 300px;
}

Discussão

Tecnicamente, o código HTML do acordeão é mais conveniente do que o código das abas: nele, os links estão localizados diretamente acima do spoiler que eles abrem e fecham. Além disso, a classe active em nossa marcação é dada ao pai comum do link e do spoiler.

Isso significa que ao clicar em um link, você precisa simplesmente desativar a aba antiga e ativar a nova. Para desativar a aba antiga é necessário encontrar a aba com a classe active e remover essa classe dela.

Para ativar uma nova aba, você precisa, ao clicar em um link, encontrar o pai dessa aba link e dar a ela a classe active. Tecnicamente, essa busca pode ser feita assim: basta encontrar o pai mais próximo do link que tem a classe tab.

Задание 1

Copie os códigos HTML e CSS fornecidos. Implemente o acordeão de acordo com o algoritmo descrito.