FAQ Accordion – Built with Semantic HTML & Modern CSS (No JavaScript)

Solution retrospective
I'm proud of achieving a fully functional and accessible FAQ accordion without using any JavaScript, relying solely on the power of semantic HTML and CSS.
The project scored 100/100 in all Lighthouse categories (Performance, Accessibility, Best Practices, SEO).
The main challenge was animating the <details>
element’s height, as it doesn’t support smooth transitions by default.
I solved it using block-size
transitions combined with the new transition-behavior: allow-discrete;
property, guided by a helpful YouTube tutorial.
Another challenge was styling native elements like <summary>
while keeping them accessible — handled via pseudo-classes (:is(:focus-visible, :hover))
and removing the default marker with ::marker
.
I’d appreciate feedback on the accessibility and responsive design approach, particularly if there are ways to improve the keyboard navigation or visual focus states for users relying on assistive technologies.
Please log in to post a comment
Log in with GitHubCommunity feedback
No feedback yet. Be the first to give feedback on VIMP's solution.
Join our Discord community
Join thousands of Frontend Mentor community members taking the challenges, sharing resources, helping each other, and chatting about all things front-end!
Join our Discord