🎉 hey, I shipped skillcraft.ai — it shows you which dev skills are in demand

Thought you might find it useful. See what's trending, what's fading, and which skills are getting people hired.

Published
2 min read

::details-content: style expandable content without wrapper divs

The ::details-content pseudo-element lets you style the expandable content of details elements separately from the summary, no divs needed.

The ::details-content pseudo-element solves a problem that existed since <details> was introduced: you couldn’t style the content area without wrapping it in a div.

The problem: you want the summary and content to look different, so you’d need to add a wrapper div just for styling:

<!-- The old way: wrapper required for styling -->
<details>
<summary>How do I return an order?</summary>
<div class="content-wrapper">
<p>
Visit your order page and click "Return Item". You'll receive a prepaid
shipping label via email within 24 hours.
</p>
</div>
</details>
details::summary {
padding: 1rem;
background: white;
}
.content-wrapper {
padding: 1rem;
background: #f9fafb;
border-top: 1px solid #e5e7eb;
}

Now with ::details-content, forget the wrapper:

<!-- Clean HTML, no wrapper needed -->
<details>
<summary>How do I return an order?</summary>
<p>
Visit your order page and click "Return Item". You'll receive a prepaid
shipping label via email within 24 hours.
</p>
</details>
details::summary {
padding: 1rem;
background: white;
}
details::details-content {
padding: 1rem;
background: #f9fafb;
border-top: 1px solid #e5e7eb;
}

Here’s what that looks like in action:

How do I return an order?

Visit your order page and click "Return Item". You'll receive a prepaid shipping label via email within 24 hours. Ship the item back in original condition.

What's your return window?

We accept returns within 30 days of purchase. Items must be unused, in original packaging, and have the original receipt or proof of purchase.

Do you offer refunds or exchanges?

You can choose between a full refund or an exchange for a different size or color. Refunds are processed within 5-7 business days after we receive your return.

What if my item arrives damaged?

Contact our support team immediately with photos of the damage. We'll send a replacement at no cost or process a full refund, whichever you prefer.

You can also animate it:

details::details-content {
opacity: 0;
transition:
opacity 300ms,
content-visibility 300ms allow-discrete;
}
details[open]::details-content {
opacity: 1;
}

This fades the content in/out smoothly when opening and closing. The allow-discrete keyword lets content-visibility participate in the transition—important for performance when you have lots of content inside.

::details-content hit Baseline status in September 2025, so it works everywhere: Chrome 131+, Firefox 143+, Safari 18.4+, and Edge 131+. For older browsers, fall back to wrapper divs.

Use it for FAQs, documentation sidebars, expandable menus, pricing tiers, anything where the content needs to look different from the trigger. You get cleaner HTML, less CSS, full control over the content area, and no semantic compromises.


Found this article helpful? You might enjoy my free newsletter. I share dev tips and insights to help you grow your coding skills and advance your tech career.


Check out these related articles that might be useful for you. They cover similar topics and provide additional insights.

Webdev
4 min read

Speed Up Your Website With rel='preconnect' and increase PageSpeed Insights Score

Using link rel='preconnect' can improve your website's performance by reducing connection setup times to key external domains.

Sep 13, 2024
Read article
Webdev
5 min read

Add Auth to Astro 5 with Clerk in 5 Minutes

The simplest setup for adding Clerk authentication to your Astro project, with minimal code

Dec 18, 2024
Read article
Webdev
3 min read

CSS ::target-text for Text Highlighting

A look at how browsers can highlight text fragments using CSS ::target-text, making text sharing and navigation more user-friendly

Dec 17, 2024
Read article
Webdev
12 min read

Robust Data Fetching Architecture For Complex React/Next.js Apps

How I use the 'Three Layers of Data' architecture pattern for React and Next.js apps to avoid common pitfalls, tech debt, and improve performance

May 4, 2025
Read article
Webdev
8 min read

Invisible columns in SQL

It’s a small feature, but it can make a big difference.

Aug 26, 2024
Read article
Webdev
6 min read

Micro Frontends: The LEGO Approach to Web Development

Explore the concept of micro frontends in web development, understand their benefits, and learn when this architectural approach is most effective for building scalable applications.

Oct 2, 2024
Read article
Webdev
3 min read

CVE-2025-29927 - Next.js Middleware Bypass Explained In Simple Terms

The vulnerability skips Next.js middleware security checks by adding a single HTTP header

Apr 6, 2025
Read article
Webdev
4 min read

Mental Toughness is the Best Quality a Developer Can Have

Mental toughness gets developers through challenges like debugging, picking up new tools, and hitting tight deadlines. It’s about staying calm and pushing through when things get tough.

Sep 12, 2024
Read article
Webdev
4 min read

Optimize Your Astro Site's <head> with astro-capo

Automatically improve your Astro site's performance using astro-capo

Oct 19, 2024
Read article

This article was originally published on https://www.trevorlasn.com/blog/details-content-pseudo-element. It was written by a human and polished using grammar tools for clarity.