Accordion
Expandable sections that show or hide content on click.
Design Guidance
| Required | Title & content |
| Limitations | Titles should be limited in length to give users just enough information to assist with scanning. |
Use aria-expanded="true" on the accordion button to keep an item open by default, and aria-expanded="false" to keep it closed.
Default Accordion
View HTML
<div class="txds-accordion">
<div class="txds-accordion__item">
<button type="button" class="txds-accordion__button" aria-expanded="false" aria-controls="acc-1">
How do I apply for SNAP benefits?
</button>
<div class="txds-accordion__content" id="acc-1" aria-hidden="true">
<p class="txds-accordion__text">You can apply online through YourTexasBenefits.com or visit your local office in person. Applications are processed within 30 days, or 7 days for emergency situations. For help with your application:</p>
<div class="txds-accordion__details">
<div class="txds-accordion__detail">
<p class="txds-accordion__detail-label">Email Address</p>
<p class="txds-accordion__detail-value"><a href="mailto:contact@tdoa.texas.gov">contact@tdoa.texas.gov</a></p>
</div>
<div class="txds-accordion__detail">
<p class="txds-accordion__detail-label">Phone Number</p>
<p class="txds-accordion__detail-value"><a href="tel:5555555555">(555) 555‑5555</a></p>
</div>
</div>
<div class="txds-accordion__details">
<div class="txds-accordion__detail">
<p class="txds-accordion__detail-label">Email Address</p>
<p class="txds-accordion__detail-value"><a href="mailto:contact@tdoa.texas.gov">contact@tdoa.texas.gov</a></p>
</div>
<div class="txds-accordion__detail">
<p class="txds-accordion__detail-label">Phone Number</p>
<p class="txds-accordion__detail-value"><a href="tel:5555555555">(555) 555‑5555</a></p>
</div>
</div>
</div>
</div>
<div class="txds-accordion__item">
<button type="button" class="txds-accordion__button" aria-expanded="false" aria-controls="acc-2">
What documents do I need to bring?
</button>
<div class="txds-accordion__content" id="acc-2" aria-hidden="true">
<p class="txds-accordion__text">Bring a valid photo ID, proof of income for all household members, and proof of Texas residency such as a utility bill or lease agreement. Additional documents may be required depending on your situation.</p>
</div>
</div>
<div class="txds-accordion__item">
<button type="button" class="txds-accordion__button" aria-expanded="false" aria-controls="acc-3">
Where can I find my local office?
</button>
<div class="txds-accordion__content" id="acc-3" aria-hidden="true">
<p class="txds-accordion__text">Use your zip code on the Office Locator page to find the nearest HHSC office, along with hours and directions. Walk-ins are welcome, but scheduling an appointment is recommended.</p>
</div>
</div>
</div>
Bordered Accordion
View HTML
<div class="txds-accordion txds-accordion--bordered">
<div class="txds-accordion__item">
<button type="button" class="txds-accordion__button" aria-expanded="false" aria-controls="acc-b1">
Am I eligible for WIC?
</button>
<div class="txds-accordion__content" id="acc-b1" aria-hidden="true">
<p class="txds-accordion__text">Texas WIC is available to pregnant women, new mothers, infants, and children under five who meet income guidelines. Contact your local WIC clinic for details:</p>
<div class="txds-accordion__details">
<div class="txds-accordion__detail">
<p class="txds-accordion__detail-label">Email Address</p>
<p class="txds-accordion__detail-value"><a href="mailto:contact@tdoa.texas.gov">contact@tdoa.texas.gov</a></p>
</div>
<div class="txds-accordion__detail">
<p class="txds-accordion__detail-label">Phone Number</p>
<p class="txds-accordion__detail-value"><a href="tel:5555555555">(555) 555‑5555</a></p>
</div>
</div>
</div>
</div>
<div class="txds-accordion__item">
<button type="button" class="txds-accordion__button" aria-expanded="false" aria-controls="acc-b2">
How often do I need to recertify?
</button>
<div class="txds-accordion__content" id="acc-b2" aria-hidden="true">
<p class="txds-accordion__text">WIC benefits must be recertified every 6 to 12 months depending on your category. You will receive a reminder letter before your certification expires.</p>
</div>
</div>
</div>
JavaScript Behavior
Add this script to enable toggle behavior:
<script>
document.querySelectorAll('.txds-accordion__button').forEach(function (btn) {
btn.addEventListener('click', function () {
var expanded = this.getAttribute('aria-expanded') === 'true';
this.setAttribute('aria-expanded', String(!expanded));
var content = document.getElementById(this.getAttribute('aria-controls'));
if (!content) return;
if (!expanded) {
content.setAttribute('aria-hidden', 'false');
content.classList.add('txds-accordion__content--open');
content.style.height = '0px';
requestAnimationFrame(function () {
content.style.height = content.scrollHeight + 'px';
});
content.addEventListener('transitionend', function onEnd(e) {
if (e.propertyName !== 'height') return;
content.style.height = 'auto';
content.removeEventListener('transitionend', onEnd);
});
} else {
content.style.height = content.scrollHeight + 'px';
requestAnimationFrame(function () {
content.setAttribute('aria-hidden', 'true');
content.classList.remove('txds-accordion__content--open');
content.style.height = '0px';
});
}
});
});
</script>
CSS Classes
| Class | Description |
|---|---|
txds-accordion |
Base accordion container. |
txds-accordion__item |
Individual accordion section with bottom border. |
txds-accordion__button |
Clickable header (H5, 24px bold, primary-60). Use aria-expanded and aria-controls. |
txds-accordion__content |
Collapsible content panel. Toggled via aria-hidden or the --open modifier. |
txds-accordion__text |
Body text inside the panel (20px, gray-70). |
txds-accordion__details |
Flex row of contact detail pairs (email, phone, etc.). |
txds-accordion__detail |
Single detail column with label and value. |
txds-accordion__detail-label |
Extrabold 16px label (e.g. "Email Address"). |
txds-accordion__detail-value |
Linked value text (primary-50 underline). |
txds-accordion--bordered |
Variant with a colored left border on each header. |