Аккордеон на JavaScript

Хајде сада да имплементирамо акордеон. Он личи на табове окренуте на бок. При томе у акордеону се може затворити активан таб, ако се кликне на активну везу.

Ево узорка:

Проучите и верстање на коме ћемо решавати задатак:

html<div id="parent">
  <div class="tab active">
    <div class="link">
      <a href="#" >таб 1</a>
    </div>
    <div class="text">
      текст таба 1
    </div>
  </div>
  <div class="tab">
    <div class="link">
      <a href="#" >таб 2</a>
    </div>
    <div class="text">
      текст таба 2
    </div>
  </div>
  <div class="tab">
    <div class="link">
      <a href="#" >таб 3</a>
    </div>
    <div class="text">
      текст таба 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;
}

Дискусија

Технички, HTML код акордеона је погоднији од кода табова: у њему су везе директно постављене изнад спојлера који отварају и затварају. Поред тога, класа active у нашем верстању се даје заједничком родитељу везе и спојлера.

То значи да при клику на везу треба једноставно деактивирати стари таб и активирати нови. Да би се деактивирао стари таб потребно је наћи таб са класом active и уклонити из њега ту класу.

Да би се активирао нови таб потребно је по клику на везу пронаћи таб-родитеља те везе и доделити му класу active. Технички, такво претраживање се може урадити овако: једноставно пронаћи најближег родитеља везе који има класу tab.

Задание 1

Копирајте себи дате HTML и CSS кодове. Имплементирајте акордеон по описаном алгоритму.