Nasıl filtrelenir

Sınıflara göre DIV elementlerini nasıl filtrelediğinizi öğrenin.

DIV elementlerini filtrele

BMW
Narınca
Volvo
Kırmızı
Ford
Mavi
Kedi
Köpek
Kavun
Kivi
Muz
Limon
Sığır
BYD

亲自试一试

Filtrelenebilir DIV elementleri oluştur

Adım 1 - HTML Ekle:

<!-- Kontrol düğmeleri -->
<div id="myBtnContainer">
  <button class="btn active" onclick="filterSelection('tumunu_goster')"> Tümünü Göster</button>
  <button class="btn" onclick="filterSelection('arabalar')"> Arabalar</button>
  <button class="btn" onclick="filterSelection('hayvanlar')"> Hayvanlar</button>
  <button class="btn" onclick="filterSelection('meyveler')"> Meyveler</button>
  <button class="btn" onclick="filterSelection('renkler')"> Renkler</button>
</div>
<!-- Filtrelenebilir elementler. Dikkat edin, bazıları birden fazla sınıfa sahiptir (birçok kategoriye aitse bu sınıflar kullanılabilir) -->
<div class="container">
  <div class="filterDiv arabalar">BMW</div>
  <div class="filterDiv renkler meyveler">Narınca</div>
  <div class="filterDiv arabalar">Volvo</div>
  <div class="filterDiv renkler">Kırmızı</div>
  <div class="filterDiv arabalar">Ford</div>
  <div class="filterDiv renkler">Mavi</div>
  <div class="filterDiv animals">Cat</div>
  <div class="filterDiv animals">Dog</div>
  <div class="filterDiv fruits">Melon</div>
  <div class="filterDiv fruits animals">Kiwi</div>
  <div class="filterDiv fruits">Banana</div>
  <div class="filterDiv fruits">Lemon</div>
  <div class="filterDiv animals">Cow</div>
</div>

İkinci Adım - CSS Ekle:

.container {
  overflow: hidden;
}
.filterDiv {
  float: left;
  background-color: #2196F3;
  color: #ffffff;
  width: 100px;
  line-height: 100px;
  text-align: center;
  margin: 2px;
  display: none; /* Varsayılan olarak gizli */
}
/* Filtrelenmiş elementlere "show" sınıfı ekleyin */
.show {
  display: block;
}
/* Düğme stillerini ayarlayın */
.btn {
  border: none;
  outline: none;
  padding: 12px 16px;
  background-color: #f1f1f1;
  cursor: pointer;
}
/* Fare işaretçisi üzerine hafif gri arka plan ekleyin */
.btn:hover {
  background-color: #ddd;
}
/* Etkin düğmeye koyu arka plan ekleyin */
.btn.active {
  background-color: #666;
  color: white;
}

Üçüncü Adım - JavaScript Ekle:

filterSelection("all")
function filterSelection(c) {
  var x, i;
  x = document.getElementsByClassName("filterDiv");
  if (c == "all") c = "";
  // 向过滤后的元素添加 "show" 类(display:block),并从未选中的元素中移除 "show" 类
  for (i = 0; i < x.length; i++) {
    w3RemoveClass(x[i], "show");
    if (x[i].className.indexOf(c) > -1) w3AddClass(x[i], "show");
  }
}
// 显示过滤后的元素
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];
    }
  }
}
// 隐藏未选中的元素
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(" ");
}
// 向当前的控制按钮添加活动类(高亮显示它)
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";
  });
}

亲自试一试