<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");
		}
	});
});

External CSS

This Pen doesn't use any external CSS resources.

External JavaScript

This Pen doesn't use any external JavaScript resources.