JSFiddle - React, Tailwind, and code Playground
by Prathameshsb
HTML
<div class="accordion">
<div class="accordion-header">
<h2>Accordion Item 1</h2>
<div class="arrow-icon"></div>
</div>
<div class="accordion-content">
<p>This is the content for Accordion Item 1.</p>
</div>
</div>
<div class="accordion">
<div class="accordion-header">
<h2>Accordion Item 2</h2>
<div class="arrow-icon"></div>
</div>
<div class="accordion-content">
<p>This is the content for Accordion Item 2.</p>
</div>
</div>
<div class="accordion">
<div class="accordion-header">
<h2>Accordion Item 3</h2>
<div class="arrow-icon"></div>
</div>
<div class="accordion-content">
<p>This is the content for Accordion Item 3.</p>
</div>
</div>
CSS
.accordion {
border: 1px solid #ccc;
margin-bottom: 10px;
}
.accordion-header {
display: flex;
align-items: center;
justify-content: space-between;
padding: 10px;
cursor: pointer;
background-color: lightblue;
}
.accordion-content {
padding: 10px;
display: none;
}
.arrow-icon {
width: 10px;
height: 10px;
border: solid #000;
border-width: 0 2px 2px 0;
transform: rotate(45deg);
transition: transform 0.2s ease-in-out;
}
.open .arrow-icon {
transform: rotate(-135deg);
}
JavaScript
const accordions = document.querySelectorAll('.accordion');
accordions.forEach((accordion) => {
const header = accordion.querySelector('.accordion-header');
const content = accordion.querySelector('.accordion-content');
header.addEventListener('click', () => {
accordion.classList.toggle('open');
content.style.display = accordion.classList.contains('open') ? 'block' : 'none';
});
});