</> ConvertAtlas Developer Tools
Bootstrap 5 · Beginner

Category Filter Buttons

A button group that filters a grid of items by category.

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 style="max-width:380px">
  <div class="btn-group btn-group-sm mb-3" id="fbBtns"><button class="btn btn-primary" data-f="all">All</button><button class="btn btn-outline-primary" data-f="design">Design</button><button class="btn btn-outline-primary" data-f="dev">Dev</button></div>
  <div class="row g-2" id="fbGrid">
    <div class="col-6" data-cat="design"><div class="card border-0 shadow-sm p-2 small">Logo design</div></div>
    <div class="col-6" data-cat="dev"><div class="card border-0 shadow-sm p-2 small">API build</div></div>
    <div class="col-6" data-cat="design"><div class="card border-0 shadow-sm p-2 small">UI kit</div></div>
    <div class="col-6" data-cat="dev"><div class="card border-0 shadow-sm p-2 small">Database</div></div>
  </div>
</div>
var btns=document.querySelectorAll('#fbBtns button'),items=document.querySelectorAll('#fbGrid [data-cat]');
btns.forEach(function(b){b.onclick=function(){btns.forEach(function(x){x.className='btn btn-outline-primary'});b.className='btn btn-primary';var f=b.dataset.f;items.forEach(function(it){it.style.display=(f==='all'||it.dataset.cat===f)?'':'none'})}});
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.