Jak stworzyć: galerię kolekcji prac z filtrem

Naucz się, jak stworzyć galerię kolekcji prac z filtrem.

Moja kolekcja prac

Kliknij przycisk, aby przefiltrować kategorię:

Góry
Góry

Lorem ipsum dolor..

Aurora
Światła

Lorem ipsum dolor..

Natura
Las

Lorem ipsum dolor..

Samochód
Klasyczny

Lorem ipsum dolor..

Samochód
Szybko

Lorem ipsum dolor..

Samochód
Retro

Lorem ipsum dolor..

Samochód
Dziewczyna

Lorem ipsum dolor..

Samochód
Kobieta

Lorem ipsum dolor..

Samochód
Mężczyzna

Lorem ipsum dolor..

Try it yourself

Jak stworzyć stronę kolekcji prac

Krok 1 - Dodaj HTML:

<h2>PORTFOLIO</h2>
<div id="myBtnContainer">
  <button class="btn active" onclick="filterSelection('wszystko')"> Pokaż wszystko</button>
  <button class="btn" onclick="filterSelection('przyroda')"> Przyroda</button>
  <button class="btn" onclick="filterSelection('samochody')"> Samochody</button>
  <button class="btn" onclick="filterSelection('ludzie')"> Ludzie</button>
</div>
<-- Galeria kolekcji prac -->
<div class="row">
  <div class="column nature">
    <div class="content">
      <img src="/w3images/mountains.jpg" alt="Mountains" style="width:100%">
      <h4>Mountains</h4>
      <p>Lorem ipsum dolor..</p>
    </div>
  </div>
  <div class="column nature">
    <div class="content">
      <img src="/w3images/lights.jpg" alt="Lights" style="width:100%">
      <h4>Lights</h4>
      <p>Lorem ipsum dolor..</p>
    </div>
  </div>
  <div class="column nature">
    <div class="content">
      <img src="/w3images/nature.jpg" alt="Nature" style="width:100%">
      <h4>Forest</h4>
      <p>Lorem ipsum dolor..</p>
    </div>
  </div>
  <div class="column cars">
    <div class="content">
      <img src="/w3images/cars1.jpg" alt="Car" style="width:100%">
      <h4>Retro</h4>
      <p>Lorem ipsum dolor..</p>
    </div>
  </div>
  <div class="column cars">
    <div class="content">
      <img src="/w3images/cars2.jpg" alt="Car" style="width:100%">
      <h4>Fast</h4>
      <p>Lorem ipsum dolor..</p>
    </div>
  </div>
  <div class="column cars">
    <div class="content">
      <img src="/w3images/cars3.jpg" alt="Car" style="width:100%">
      <h4>Classic</h4>
      <p>Lorem ipsum dolor..</p>
    </div>
  </div>
  <div class="column people">
    <div class="content">
      <img src="/w3images/people1.jpg" alt="People" style="width:100%">
      <h4>Girl</h4>
      <p>Lorem ipsum dolor..</p>
    </div>
  </div>
  <div class="column people">
    <div class="content">
      <img src="/w3images/people2.jpg" alt="People" style="width:100%">
      <h4>Man</h4>
      <p>Lorem ipsum dolor..</p>
    </div>
  </div>
  <div class="column people">
    <div class="content">
      <img src="/w3images/people3.jpg" alt="People" style="width:100%">
      <h4>Woman</h4>
      <p>Lorem ipsum dolor..</p>
    </div>
  </div>
<!-- Koniec siatki -->
</div>

Krok 2 - Dodaj CSS:

* {
  box-sizing: border-box;

body {
  background-color: #f1f1f1;
  padding: 20px;
  padding: 20px;

font-family: Arial;
/* Centralizuj stronę */
  .main {
  max-width: 1000px;

margin: auto;
  h1 {
  font-size: 50px;

word-break: break-all;
  margin: 8px -16px;

/* Dodaj wewnętrzną margines do między kolumnami (jeśli potrzebne) */
.row {
.row > .column {
  padding: 8px;

/* Utwórz trzy sąsiednie, równo szerokie kolumny */
.column {
  float: left;
  width: 33.33%;
  display: none; /* Domyślnie ukryj kolumny */

/* Usuń float po stronie linii */
.row:after {
  content: "";
  display: table;
  clear: both;

/* Zawartość */
.content {
  background-color: white;
  padding: 10px;

/* Klasa "show" jest dodawana do wybranych elementów */
.show {
  display: block;

/* Ustaw styl przycisku */
.btn {
  border: none;
  outline: none;
  padding: 12px 16px;
  background-color: white;
  cursor: pointer;

/* Dodaj kolor tła w kolorze szarym przy nawigacji myszą */
.btn:hover {
  background-color: #ddd;

/* Dodaj ciemny kolor tła do aktywnego przycisku */
.btn.active {
  background-color: #666;
   color: white;

Krok trzeci - Dodaj JavaScript:

filterSelection("all") // Wykonaj funkcję i wyświetl wszystkie kolumny
function filterSelection(c) {
  var x, i;
  x = document.getElementsByClassName("column");
  jeśli (c == "all") c = "";
  // Dodaj klasę "show" (display:block) do wybranych elementów i usuń klasę "show" z niewybranych elementów
  for (i = 0; i < x.length; i++) {
    w3RemoveClass(x[i], "show");
    if (x[i].className.indexOf(c) > -1) w3AddClass(x[i], "show");
  

// Show filtered elements
function w3AddClass(element, name) {
  var i, arr1, arr2;
  arr1 = element.className.split(" ");
  arr2 = name.split(" ");
  for (i = 0; i < arr2.length; i++) {
    if (arr1.indexOf(arr2[i]) == -1) {
      element.className += " " + arr2[i];
    
  

// Hide unselected elements
function w3RemoveClass(element, name) {
  var i, arr1, arr2;
  arr1 = element.className.split(" ");
  arr2 = name.split(" ");
  for (i = 0; i < arr2.length; i++) {
    while (arr1.indexOf(arr2[i]) > -1) {
      arr1.splice(arr1.indexOf(arr2[i]), 1);
    
  
  element.className = arr1.join(" ");

// Add the active class to the current button (highlight it)
var btnContainer = document.getElementById("myBtnContainer");
var btns = btnContainer.getElementsByClassName("btn");
for (var i = 0; i < btns.length; i++) {
  btns[i].addEventListener("click", function(){
    var current = document.getElementsByClassName("active");
    current[0].className = current[0].className.replace(" active", "");
    this.className += " active";
  

Try it yourself

Related pages

Tutorial:Jak utworzyć kolekcję obrazów