When javascript doesn’t make the grade.
HTML
<div class="wrapper">
<div class="half">
<p>Open multiple</p>
<div class="tab"><input id="tab-one" name="tabs" type="checkbox" /> <!--can open several tabs at once-->
<label for="tab-one">Label One</label>
<div class="tab-content">
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Tenetur, architecto, explicabo perferendis nostrum, maxime impedit atque odit sunt pariatur illo obcaecati soluta molestias iure facere dolorum adipisci eum? Saepe, itaque.</p>
</div>
</div>
<div class="tab"><input id="tab-two" name="tabs" type="checkbox" />
<label for="tab-two">Label Two</label>
<div class="tab-content">
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Tenetur, architecto, explicabo perferendis nostrum, maxime impedit atque odit sunt pariatur illo obcaecati soluta molestias iure facere dolorum adipisci eum? Saepe, itaque.</p>
</div>
</div>
<div class="tab"><input id="tab-three" name="tabs" type="checkbox" />
<label for="tab-three">Label Three</label>
<div class="tab-content">
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Tenetur, architecto, explicabo perferendis nostrum, maxime impedit atque odit sunt pariatur illo obcaecati soluta molestias iure facere dolorum adipisci eum? Saepe, itaque.</p>
</div>
</div>
</div>
<div class="half">
<p>Open one</p>
<div class="tab blue"><input id="tab-four" name="tabs2" type="radio" /> <!--opening one tab closes another-->
<label for="tab-four">Label One</label>
<div class="tab-content">
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Tenetur, architecto, explicabo perferendis nostrum, maxime impedit atque odit sunt pariatur illo obcaecati soluta molestias iure facere dolorum adipisci eum? Saepe, itaque.</p>
</div>
</div>
<div class="tab blue"><input id="tab-five" name="tabs2" type="radio" />
<label for="tab-five">Label Two</label>
<div class="tab-content">
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Tenetur, architecto, explicabo perferendis nostrum, maxime impedit atque odit sunt pariatur illo obcaecati soluta molestias iure facere dolorum adipisci eum? Saepe, itaque.</p>
</div>
</div>
<div class="tab blue"><input id="tab-six" name="tabs2" type="radio" />
<label for="tab-six">Label Three</label>
<div class="tab-content">>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Tenetur, architecto, explicabo perferendis nostrum, maxime impedit atque odit sunt pariatur illo obcaecati soluta molestias iure facere dolorum adipisci eum? Saepe, itaque.</p>
</div>
</div>
</div>
</div>
CSS
/* Acordeon styles */ .tab { position: relative; margin-bottom: 1px; width: 100%; color: #fff; overflow: hidden; } .tab input { position: absolute; opacity: 0; z-index: -1; } .tab label { position: relative; display: block; padding: 0 0 0 1em; background: #16a085; font-weight: bold; line-height: 3; cursor: pointer; } .blue label { background: #2980b9; } .tab-content { max-height: 0; overflow: hidden; background: #1abc9c; -webkit-transition: max-height .35s; -o-transition: max-height .35s; transition: max-height .35s; } .blue .tab-content { background: #3498db; } .tab-content p { margin: 1em; } /* :checked */ .tab input:checked ~ .tab-content { max-height: 100vh; } /* Icon */ .tab label::after { position: absolute; right: 0; top: 0; display: block; width: 3em; height: 3em; line-height: 3; text-align: center; -webkit-transition: all .35s; -o-transition: all .35s; transition: all .35s; } .tab input[type=checkbox] + label::after { content: "+"; } .tab input[type=radio] + label::after { content: "\25BC"; } .tab input[type=checkbox]:checked + label::after { transform: rotate(315deg); } .tab input[type=radio]:checked + label::after { transform: rotateX(180deg); }