Plus/Minus Accordion
A custom accordion with plus/minus toggles, multiple open allowed.
Requires Bootstrap 5. Add the CDN tags below to your page (styles in
<head>, scripts before </body>). The downloaded file already includes them.<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css"><script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js"></script><div class="card border-0 shadow-sm" style="max-width:380px"><div class="card-body" id="apWrap">
<div class="border rounded mb-2"><button class="btn w-100 d-flex justify-content-between fw-semibold small py-2" data-ap>Feature A<span>+</span></button><div class="px-3 pb-2 small text-secondary" style="display:none">Details about feature A and how it works.</div></div>
<div class="border rounded mb-2"><button class="btn w-100 d-flex justify-content-between fw-semibold small py-2" data-ap>Feature B<span>+</span></button><div class="px-3 pb-2 small text-secondary" style="display:none">Details about feature B and benefits.</div></div>
<div class="border rounded"><button class="btn w-100 d-flex justify-content-between fw-semibold small py-2" data-ap>Feature C<span>+</span></button><div class="px-3 pb-2 small text-secondary" style="display:none">Details about feature C and usage.</div></div>
</div></div>document.querySelectorAll('#apWrap [data-ap]').forEach(function(b){b.onclick=function(){var p=b.nextElementSibling,open=p.style.display==='none';p.style.display=open?'block':'none';b.querySelector('span').textContent=open?'−':'+'}});Free to use.This component uses Bootstrap 5 (linked above). Copy any file, or download a ready-to-open .html page with the CDN links already included.