Utwórz projekt ↗
CSS / JS · KOD NA LICENCJI MIT

Filtrowanie elementów

Kliknij kategorię i pokaż pasujące karty.

Edytuj HTML, CSS i JS ↗ Otwórz konfigurator ↗

Gdzie wykorzystać ten przykład?

Elementy strony dopasowane do własnego projektu. Wariant „Filtrowanie elementów” możesz dopasować do kolorów i treści swojej strony.

Jak działa ten efekt?

HTML określa strukturę przykładu, CSS jego wygląd, a JavaScript — jeżeli występuje — odpowiada za interakcję. Podgląd pokazuje domyślne ustawienia, które możesz zmienić w edytorze.

Jak dodać go na stronę?

  1. Otwórz przykład w edytorze i podmień tekst oraz kolory.
  2. HTML wstaw w miejscu, w którym ma pojawić się element.
  3. CSS przenieś do arkusza stylów swojej strony. Reguły body z podglądu dopasuj do własnego układu.
  4. JavaScript uruchom po załadowaniu elementów HTML, na przykład przed zamknięciem </body>.
  5. Sprawdź działanie na telefonie, klawiaturą i z własną treścią.

Na co zwrócić uwagę?

Podmień treści i odnośniki. Kod działa w przeglądarce; formularze wymagają osobnej obsługi wysyłania po stronie serwera.

Co możesz zmienić w konfiguratorze?

Kolor akcentu. W edytorze kodu możesz dodatkowo zmienić całą strukturę i zachowanie przykładu.

Gotowy kod: Filtrowanie elementów

HTML

<div class="filter"><div class="filters" role="group" aria-label="Kategorie"><button data-category="all" aria-pressed="true">Wszystkie</button><button data-category="design" aria-pressed="false">Design</button><button data-category="code" aria-pressed="false">Kod</button></div><div class="items"><article data-category="design"><span>01</span><h3>Identyfikacja</h3><p>Design</p></article><article data-category="code"><span>02</span><h3>Strona www</h3><p>Kod</p></article><article data-category="design"><span>03</span><h3>Typografia</h3><p>Design</p></article><article data-category="code"><span>04</span><h3>Aplikacja</h3><p>Kod</p></article></div></div>

CSS

*{box-sizing:border-box}body{margin:0;padding:35px 24px;background:#f4f5ef;color:#293322;font:15px/1.7 Arial,sans-serif;min-height:100vh;display:grid;place-items:center}button,input{font:inherit}button,a{touch-action:manipulation}button{cursor:pointer}button:focus-visible,a:focus-visible,summary:focus-visible{outline:3px solid #738858;outline-offset:4px}h2,h3,p{margin-top:0}[hidden]{display:none!important}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}
.filter{width:100%;max-width:750px}.filters{display:flex;gap:7px;margin-bottom:18px}.filters button{padding:8px 13px;border:1px solid #d8e1cc;border-radius:5px;background:#fff;font-size:12px}.filters button[aria-pressed=true]{background:#e95b30;color:#fff;border-color:#e95b30}.items{display:grid;grid-template-columns:repeat(2,1fr);gap:13px}.items article{background:#fff;border:1px solid #e0e7d7;border-radius:6px;padding:20px}.items article[hidden]{display:none}.items span{font:11px monospace;color:#e95b30}.items h3{font-size:19px;margin:15px 0 5px}.items p{font-size:11px;color:#859675;margin:0}

JavaScript

const buttons = document.querySelectorAll('.filters button');
const items = document.querySelectorAll('.items article');
buttons.forEach(button => button.addEventListener('click', () => {
    buttons.forEach(b => b.setAttribute('aria-pressed', String(b === button)));
    items.forEach(item => {
        item.hidden = button.dataset.category !== 'all' && item.dataset.category !== button.dataset.category;
    });
}));

Podobne przykłady