Miten suodattaa elementtejä

Opi, kuinka suodattaa DIV-elementtejä luokkien perusteella.

Suodata DIV-elementit

BMW
Oranssi
Volvo
Punainen
Ford
Sininen
Kissa
Koira
Vehnä
Kivisalaatti
Banaani
Limetti
Lehmä
BYD

亲自试一试

Luo suodattavat DIV-elementit

Vaihe 1 - Lisää HTML:

<!-- Kontrollipainikkeet -->
<div id="myBtnContainer">
  <button class="btn active" onclick="filterSelection('all')"> Näytä kaikki</button>
  <button class="btn" onclick="filterSelection('cars')"> Autoja</button>
  <button class="btn" onclick="filterSelection('animals')"> Eläimet</button>
  <button class="btn" onclick="filterSelection('fruits')"> Hedelmät</button>
  <button class="btn" onclick="filterSelection('colors')"> Värit</button>
</div>
<!-- Voit suodattaa elementtejä. Huomaa, että jotkut elementit voivat olla useissa luokissa (jos ne kuuluvat useisiin luokkoihin, voit käyttää näitä luokkia) -->
<div class="container">
  <div class="filterDiv cars">BMW</div>
  <div class="filterDiv colors fruits">Oranssi</div>
  <div class="filterDiv cars">Volvo</div>
  <div class="filterDiv colors">Punainen</div>
  <div class="filterDiv cars">Ford</div>
  <div class="filterDiv colors">Sininen</div>
  <div class="filterDiv eläimet">Kissa</div>
  <div class="filterDiv eläimet">Koira</div>
  <div class="filterDiv hedelmät">Ananas</div>
  <div class="filterDiv hedelmät eläimet">Kookosapeli</div>
  <div class="filterDiv hedelmät">Banaani</div>
  <div class="filterDiv hedelmät">Lemoni</div>
  <div class="filterDiv eläimet">Lehmä</div>
</div>

Toinen vaihe - lisää CSS:

.container {
  ylipääsy: piilotettu;
}
.filterDiv {
  liukua: vasen;
  taustaväri: #2196F3;
  väri: #ffffff;
  leveys: 100px;
  rivinvaihto: 100px;
  tekstiasento: keskellä;
  margin: 2px;
  näyttö: ei näkyvissä; /* Oletuksena piilotettu */
}
/* Lisää suodetulle elementille "show"-luokan */
.show {
  näyttö: blokki;
}
/* Aseta painikkeen tyyli */
.btn {
  reuna: ei mitään;
  reuna: ei mitään;
  tuoda: 12px 16px;
  taustaväri: #f1f1f1;
  kursori: sormi;
}
/* Lisää hiiren osoitettuun painikkeeseen vaaleanharmaan taustaväri */
.btn:hover {
  taustaväri: #ddd;
}
/* Lisää aktiiviseen painikkeeseen tumma taustaväri */
.btn.active {
  taustaväri: #666;
  väri: valkoinen;
}

Kolmas vaihe - lisää JavaScript:

filterSelection("all")
function filterSelection(c) {
  var x, i;
  x = document.getElementsByClassName("filterDiv");
  if (c == "all") c = "";
  // Lisää "show"-luokka suodatetuille elementeille (näytä: display:block) ja poista "show"-luokka valitsemattomilta elementeiltä
  for (i = 0; i < x.length; i++) {
    w3RemoveClass(x[i], "show");
    if (x[i].className.indexOf(c) > -1) w3AddClass(x[i], "show");
  }
}
// Näytä suodetut elementit
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];
    }
  }
}
// Piilota valitsemattomat elementit
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(" ");
}
// Lisää aktiivinen luokka nykyiselle ohjausnapille (korosta sitä)
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";
  });
}

亲自试一试