<body>
<h1>Accordion</h1>
<div>
<div class="accordionItem">
<h2 class="accordionTitle">Tab 1</h2>
<div class="accordionContent">
<p>Information here</p>
</div>
</div>
<div class="accordionItem">
<h2 class="accordionTitle">Tab 2</h2>
<div class="accordionContent">
<p>Information here</p>
</div>
</div>
<div class="accordionItem">
<h2 class="accordionTitle">Tab 3</h2>
<div class="accordionContent">
<p>Information here</p>
</div>
</div>
</div>
</body>
body {
margin-left: auto;
margin-right: auto;
max-width: 40em;
}
.accordionTitle {
cursor: pointer;
-moz-user-select: none;
-webkit-user-select: none;
-ms-user-select: none;
user-select: none;
}
.accordionTitle + .accordionContent {
display: none;
}
.accordionTitle.is-open + .accordionContent {
display: block;
}
const accordionTitles = document.querySelectorAll(".accordionTitle");
accordionTitles.forEach((accordionTitle) => {
accordionTitle.addEventListener("click", () => {
if (accordionTitle.classList.contains("is-open")) {
accordionTitle.classList.remove("is-open");
} else {
const accordionTitlesWithIsOpen = document.querySelectorAll(".is-open");
accordionTitlesWithIsOpen.forEach((accordionTitleWithIsOpen) => {
accordionTitleWithIsOpen.classList.remove("is-open");
});
accordionTitle.classList.add("is-open");
}
});
});
This Pen doesn't use any external CSS resources.
This Pen doesn't use any external JavaScript resources.