Animated CSS Accordion
An animated accordion without JavaScript, using Tailwind CSS. The component gracefully handles variable content heights using CSS grid.
Each panel has its own transition duration, which can be adjusted depending on the amount of content, ensuring a smooth and visually appealing user experience.
Component in Action
Lorem ipsum dolor sit amet consectetur, adipisicing elit. Iusto, amet!
Lorem ipsum dolor sit amet consectetur, adipisicing elit. Iusto, amet!
Lorem ipsum dolor sit amet consectetur adipisicing elit. Quo, quis dolores! Accusantium fugiat fugit iure commodi dignissimos perferendis cum voluptatibus, natus soluta molestiae magnam debitis maiores et vel doloribus quibusdam?
Component Code
#tailwind
---// Accordion #01 v0.9const { ...attr } = Astro.props---
<div {...attr}> <div class="space-y-3 text-black"> <div> <label for="accordion-panel-1" class="cursor-pointer"> <h4 id="panel-1-title" class="w-full bg-lime-400 p-2"> Accordion Panel 1 </h4> </label> <input type="checkbox" id="accordion-panel-1" class="peer" hidden /> <div class="grid [grid-template-rows:0fr] [transition:grid-template-rows_300ms] peer-checked:[grid-template-rows:1fr]" role="region" aria-labelledby="panel-1-title" aria-hidden="false" id="panel1-content"> <div class="overflow-hidden"> <div class="bg-slate-100 p-2"> <p>Lorem ipsum dolor sit amet consectetur, adipisicing elit. Iusto, amet!</p> </div> </div> </div> </div> <div> <label for="accordion-panel-2" class="cursor-pointer"> <h4 id="panel-2-title" class="w-full bg-lime-400 p-2"> Accordion Panel 2 </h4> </label> <input type="checkbox" id="accordion-panel-2" class="peer" hidden /> <div class="grid [grid-template-rows:0fr] [transition:grid-template-rows_400ms] peer-checked:[grid-template-rows:1fr]" role="region" aria-labelledby="panel-2-title" aria-hidden="false" id="panel-2-content"> <div class="overflow-hidden border border-t-0 border-gray-400"> <div class="bg-slate-100 p-2"> <p>Lorem ipsum dolor sit amet consectetur, adipisicing elit. Iusto, amet!</p> <p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Quo, quis dolores! Accusantium fugiat fugit iure commodi dignissimos perferendis cum voluptatibus, natus soluta molestiae magnam debitis maiores et vel doloribus quibusdam?</p> </div> </div> </div> </div> </div></div>