Jak filtrować elementy

Jak filtrować elementy na podstawie klas DIV

Filtrowanie DIV elementów

BMW
Oranżowy
Volvo
Czerwony
Ford
Niebieski
Kot
Pies
Melon
Kiw
Banana
Limonka
Krowa
BYD

Spróbuj sam

Utwórz DIV elementy do filtrowania

Krok 1 - Dodaj HTML:

<!-- Przyciski kontrolne -->
<div id="myBtnContainer">
  <button class="btn active" onclick="filterSelection('all')"> Pokaż wszystko</button>
  <button class="btn" onclick="filterSelection('cars')"> Samochody</button>
  <button class="btn" onclick="filterSelection('animals')"> Zwierzęta</button>
  <button class="btn" onclick="filterSelection('fruits')"> Owoc</button>
  <button class="btn" onclick="filterSelection('colors')"> Kolor</button>
</div>
<!-- Elementy do filtrowania. Proszę zauważyć, że niektóre mają wiele klas (jeśli należą do wielu kategorii, można używać tych klas) -->
<div class="container">
  <div class="filterDiv cars">BMW</div>
  <div class="filterDiv colors fruits">Oranżowy</div>
  <div class="filterDiv cars">Volvo</div>
  <div class="filterDiv colors">Czerwony</div>
  <div class="filterDiv cars">Ford</div>
  <div class="filterDiv colors">Niebieski</div>
  <div class="filterDiv animals">Kot</div>
  <div class="filterDiv animals">Pies</div>
  <div class="filterDiv fruits">Melon</div>
  <div class="filterDiv fruits animals">Ananas</div>
  <div class="filterDiv fruits">Banana</div>
  <div class="filterDiv fruits">Limon</div>
  <div class="filterDiv animals">Krowa</div>
</div>

Drugi krok - Dodaj CSS:

.container {
  overflow: hidden;
}
.filterDiv {
  float: left;
  background-color: #2196F3;
  color: #ffffff;
  width: 100px;
  line-height: 100px;
  text-align: center;
  margin: 2px;
  display: none; /* domyślnie ukryte */
}
/* Dodaj klasę "show" do wybranych elementów */
.show {
  display: block;
}
/* Ustaw styl przycisków */
.btn {
  border: none;
  outline: none;
  padding: 12px 16px;
  background-color: #f1f1f1;
  cursor: pointer;
}
/* Dodaj jasne tło przy nawigacji myszą */
.btn:hover {
  background-color: #ddd;
}
/* Dodaj ciemny tło do aktywnego przycisku */
.btn.active {
  background-color: #666;
  color: white;
}

Trzeci krok - Dodaj JavaScript:

filterSelection("all")
function filterSelection(c) {
  var x, i;
  x = document.getElementsByClassName("filterDiv");
  if (c == "all") c = "";
  // Dodaj klasę "show" (display:block) do przefiltrowanych 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");
  }
}
// Wyświetl przefiltrowane elementy
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];
    }
  }
}
// Ukryj niewybrane elementy
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(" ");
}
// Dodaj klasę aktywną (podświetlenie) do bieżącego przycisku kontrolnego
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";
  });
}

Spróbuj sam