Come filtrare gli elementi

Impara come filtrare gli elementi basandoti sui nomi delle classi.

Filtra gli elementi DIV

BMW
Arancia
Volvo
Rosso
Ford
Blu
Gatto
Cane
Melone
Kiwi
Banana
Limone
Mucca
BYD

Prova da solo

Crea elementi DIV filtrabili

Primo passo - Aggiungi HTML:

<!-- Pulsanti di controllo -->
<div id="myBtnContainer">
  <button class="btn active" onclick="filterSelection('all')">Mostra tutto</button>
  <button class="btn" onclick="filterSelection('cars')">Automobili</button>
  <button class="btn" onclick="filterSelection('animals')">Animali</button>
  <button class="btn" onclick="filterSelection('fruits')">Frutti</button>
  <button class="btn" onclick="filterSelection('colors')">Colori</button>
</div>
<!-- Elementi filtrabili. Si prega di notare che alcuni possono avere più classi (se appartengono a più categorie, possono essere utilizzate queste classi) -->
<div class="container">
  <div class="filterDiv cars">BMW</div>
  <div class="filterDiv colors fruits">Arancia</div>
  <div class="filterDiv cars">Volvo</div>
  <div class="filterDiv colors">Rosso</div>
  <div class="filterDiv cars">Ford</div>
  <div class="filterDiv colors">Blu</div>
  <div class="filterDiv animals">Gatto</div>
  <div class="filterDiv animals">Cane</div>
  <div class="filterDiv fruits">Melone</div>
  <div class="filterDiv fruits animals">Mela verde</div>
  <div class="filterDiv fruits">Banana</div>
  <div class="filterDiv fruits">Limone</div>
  <div class="filterDiv animals">Mucca</div>
</div>

Passo 2 - Aggiungi CSS:

.container {
  sovraccarico: nascosto;
}
.filterDiv {
  flottante: sinistro;
  sfondo-color: #2196F3;
  colore: #ffffff;
  larghezza: 100px;
  altezza-linea: 100px;
  allineamento-testo: centro;
  margine: 2px;
  visualizzazione: none; /* Nascondi per default */
}
/* Aggiungi la classe "show" agli elementi filtrati */
.show {
  visualizzazione: blocco;
}
/* Imposta lo stile dei pulsanti */
.btn {
  bordo: none;
  contorno: none;
  spaziatura: 12px 16px;
  sfondo-color: #f1f1f1;
  cursore: puntatore;
}
/* Aggiungi sfondo grigio chiaro quando il mouse è sopra */
.btn:hover {
  sfondo-color: #ddd;
}
/* Aggiungi sfondo scuro alla pulsante attiva */
.btn.active {
  sfondo-color: #666;
  colore: bianco;
}

Passo 3 - Aggiungi JavaScript:

filterSelection("all")
function filterSelection(c) {
  var x, i;
  x = document.getElementsByClassName("filterDiv");
  if (c == "all") c = "";
  // Aggiungi la classe "show" (display:block) agli elementi filtrati e rimuovi la classe "show" dagli elementi non selezionati
  for (i = 0; i < x.length; i++) {
    w3RemoveClass(x[i], "show");
    if (x[i].className.indexOf(c) > -1) w3AddClass(x[i], "show");
  }
}
// Mostra gli elementi filtrati
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];
    }
  }
}
// Nascondi gli elementi non selezionati
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(" ");
}
// Aggiungi la classe attiva (evidenzia) al pulsante di controllo corrente
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";
  });
}

Prova da solo