CSS Accordion
Home
Snippets
CSS Accordion
HTML
CSS
JS
<div class="accordion"> <details name="info" open> <summary>Intro</summary> <div class="content"> <h3>Welcome to the Future</h3> <p>This exclusive accordion uses only HTML and CSS. Each panel slides open smoothly, while the summary fades away.</p> </div> </details> <details name="info"> <summary>Design</summary> <div class="content"> <h3>Vibrant, Modern, Clean</h3> <p>The layout features bright accent colors on a light background, subtle shadows, and smooth transitions, all without JavaScript.</p> </div> </details> <details name="info"> <summary>About</summary> <div class="content"> <h3>Pure CSS Exclusivity</h3> <p>Thanks to the new <code>name</code> attribute on <details>, only one panel stays open at a time. No scripting required.</p> </div> </details> </div>
:root { --radius: 16px; --gap: 12px; --transition: 0.5s cubic-bezier(.25,.9,.25,1); --bg: #fafafa; --text: #222; --accent1: #ff6b6b; --accent2: #00c3ff; --accent3: #7b61ff; } body { margin: 0; min-height: 100vh; display: flex; flex-direction:column; justify-content: center; align-items: center; background: var(--bg); color: var(--text); font-family: "Inter", system-ui, sans-serif; } .accordion { display: flex; gap: var(--gap); width: min(1000px, 95vw); height: 280px; } details { flex: 0 0 90px; border-radius: var(--radius); overflow: hidden; background: white; box-shadow: 0 4px 16px rgba(0,0,0,0.08); transition: flex-basis var(--transition), transform var(--transition); position: relative; } details[open] { flex: 1 1 auto; transform: translateY(-4px); } summary { writing-mode: vertical-rl; text-orientation: mixed; display: flex; align-items: center; justify-content: center; padding: 12px; font-weight: 600; font-size: 14px; cursor: pointer; list-style: none; color: white; background: var(--accent1); transition: opacity var(--transition), background var(--transition); user-select: none; } details:nth-child(2) summary { background: var(--accent2); } details:nth-child(3) summary { background: var(--accent3); } summary::-webkit-details-marker { display: none; } details[open] summary { pointer-events: none; } .content { position: absolute; inset: 0; padding: 30px 40px; background: white; opacity: 0; transform: translateX(40px); transition: opacity var(--transition), transform var(--transition); display: flex; flex-direction: column; justify-content: center; } details[open] .content { opacity: 1; transform: translateX(0); position:initial } .content h3 { margin-top: 0; font-size: 1.5rem; } .content p { color: #555; line-height: 1.5; max-width: 480px; } @media (max-width:700px) { .accordion { flex-direction: column; height: auto; } details { flex: 1 1 auto; } summary { writing-mode: horizontal-tb; } }
//js
Ad #1
Ad #2
Scroll to Top