Accordions are a fantastic way to organize content, declutter web pages, and improve user experience by allowing visitors to expand and collapse sections as needed. Whether you want to display FAQs, product details, or any other segmented content, accordions make your site neat and interactive.
In this guide, you’ll learn how to implement simple, effective accordions using HTML, CSS, and JavaScript. Let’s get started!
What is an Accordion?
An accordion is a vertically stacked list of headers that can be clicked to reveal or hide associated content. Only one or multiple sections can be open at a time depending on the design, making it an ideal tool for managing large chunks of content in a compact space.
Why Use Accordions?
- Enhance UX: Users can control what they want to read.
- Save Space: Keep pages tidy by hiding less important content until needed.
- Improve Accessibility: Properly coded accordions support keyboard navigation and screen readers.
- Boost SEO: Well-structured HTML ensures search engines understand your content hierarchy.
Step 1: Set Up Your HTML Structure
Start by creating the foundational elements for your accordion:
An accordion is a UI component used to show and hide sections of content.
Accordions help improve user experience and organize content efficiently.
Key points:
- Use
<button>
elements for headers to ensure they’re keyboard accessible. - Include ARIA attributes (
aria-expanded
,aria-controls
,role
,aria-labelledby
) for accessibility. - The content panels start hidden with the
hidden
attribute.
Step 2: Style Your Accordion with CSS
Now, add some simple CSS to create a clean, visually appealing accordion:
css
.accordion-header {
background-color: #0073e6;
color: white;
padding: 1rem;
width: 100%;
text-align: left;
border: none;
cursor: pointer;
font-size: 1.1rem;
outline: none;
transition: background-color 0.3s ease;
}
.accordion-header:hover,
.accordion-header[aria-expanded=”true”] {
background-color: #005bb5;
}
.accordion-panel {
padding: 1rem;
border: 1px solid #ddd;
border-top: none;
animation: fadeIn 0.3s ease forwards;
}
@keyframes fadeIn {
from { opacity: 0; }
to { opacity: 1; }
}
This CSS:
- Styles headers with a bold color and clear hover effects.
- Differentiates expanded headers.
- Adds padding and borders to content panels.
- Animates panels fading in smoothly.
Step 3: Add JavaScript for Interaction
To make the accordion interactive, implement JavaScript that toggles the visibility of panels and updates ARIA states accordingly.
js
document.querySelectorAll(‘.accordion-header’).forEach(button => {
button.addEventListener(‘click’, () => {
const expanded = button.getAttribute(‘aria-expanded’) === ‘true’;
const panelId = button.getAttribute(‘aria-controls’);
const panel = document.getElementById(panelId);
// Toggle current panel
button.setAttribute('aria-expanded', !expanded);
if (expanded) {
panel.hidden = true;
} else {
panel.hidden = false;
}
});
});
How this works:
- When an accordion header is clicked, the script toggles the
aria-expanded
attribute. - It then shows or hides the associated content panel.
- Panels are hidden by adding or removing the
hidden
attribute, which is best-practice for accessibility.
Extra Tips for Advanced Accordions
- Multiple Open Panels: The above script allows multiple sections to be open simultaneously. To restrict to one open panel at a time, adjust the JavaScript to close others when one is opened.
- Keyboard Accessibility: Add JavaScript handlers for keyboard events (like Enter or Space) for enhanced accessibility.
- Smooth Animation: Use CSS transitions for height or max-height changes to create smooth expanding/collapsing effects.
Conclusion
Creating accordions is a straightforward way to improve your website’s usability and presentation. By combining semantic HTML, accessible ARIA roles, clean CSS, and lightweight JavaScript, you ensure your content is organized, interactive, and inclusive.
Start implementing accordions today to keep your site both user-friendly and stylish!
Keywords: Create accordions, accordion tutorial, how to create accordion UI, accessible accordion, JavaScript accordion example, CSS accordion styling, web design tips
Implementing accordions thoughtfully can transform cluttered information into clean, manageable sections — making your website more engaging and easier to navigate.