Simple Filter with HTML and CSS

December 30, 2026

I wanted to make a simple filter for my lists and galleries as the lists becoming too big. I was looking for a simple HTML and CSS solution.

I learned this from Solaria's tutorial. It's a neat practical application for CSS attribute selectors. And the code is compact and quite easy to manage for a small personal website.


HTML

<section class="filtered-list">
  <select>
    <option value="all">All</option>
    <option value="art">Art</option>
    <option value="misc">Misc</option>
    <option value="webdev">Webdev</option>
  </select>
  <div class="tag-art">
    <a href="">Article about art</a>
  </div>
  <div class="tag-webdev">
    <a href="">Article about webdev</a>
  </div>
  <div class="tag-misc">
    <a href="">Article about something else</a>
  </div>
</section>

CSS

section.filtered-list:has(option:checked) div{display:none;}
section.filtered-list:has(option[value~="all"]:checked) div{display:block;}
section.filtered-list:has(option[value~="art"]:checked) div[class~="tag-art"]{display:block;}
section.filtered-list:has(option[value~="webdev"]:checked) div[class~="tag-webdev"]{display:block;}
section.filtered-list:has(option[value~="misc"]:checked) div[class~="tag-misc"]{display:block;}