A simple accordion menu using BEM classes
HTML:
<div id="accordion" class="accordion"> <div id="Demo1" class="accordion__item accordion__item--first"> <h4 class="accordion__title">Section 1</h4> <p class="accordion__text">Some text..</p> </div> <div id="Demo2" class="accordion__item accordion__item--second"> <h4 class="accordion__title">Section 2</h4> <p class="accordion__text">Some text..</p> </div> <div id="Demo3" class="accordion__item accordion__item--third"> <h4 class="accordion__title">Section 3</h4> <p class="accordion__text">Some text..</p> </div> </div>
SASS:
.accordion { max-width: 400px; margin: 0 auto; &__item { padding: 20px; cursor: pointer; &--first { background: lightpink; border-top-left-radius: 25px; border-top-right-radius: 25px; } &--second { background: lightblue; } &--third { background: lightgreen; border-bottom-left-radius: 25px; border-bottom-right-radius: 25px; } } &__title { color: aliceblue; text-transform: uppercase; font-size: 20px; text-align: center; } &__text { display: none; &--open { display: block; } } }
JAVASCRIPT:
var itemParent = document.querySelector('#accordion'); itemParent.addEventListener("click", opentext, false); function opentext(e) { if (e.target !== e.currentTarget) { var clickedItem = e.target.id; var itemClicked = document.getElementById(clickedItem); var itemText = itemClicked.lastElementChild; itemText.classList.toggle('accordion__text--open'); } e.stopPropagation(); }
Live result: https://codepen.io/thomaskarl/pen/QVprZe