Узнать, как создать фильтр поиска элементов DIV на основе его имени класса используя HTML, CSS и JavaScript.
Фильтр поиска элементов DIV
БМВ
Апельсин
Вольво
Красный
Мустанг
Синий
Кошка
Собака
Арбуз
Киви
Банан
Лемон
Корова
Создать фильтр элементов DIV
Шаг 1) Добавить HTML:
<!-- Control buttons -->
<div id="myBtnContainer">
<button class="btn active" onclick="filterSelection('all')"> Показать все</button>
<button class="btn" onclick="filterSelection('cars')"> Машины</button>
<button class="btn" onclick="filterSelection('animals')"> Животные</button>
<button class="btn" onclick="filterSelection('fruits')"> Фрукты</button>
<button class="btn" onclick="filterSelection('colors')"> Цветы</button>
</div>
<!-- Фильтруемые элементы. Примечание что некоторые из них имеют несколько имен классов (это может быть использовано, если они принадлежат к нескольким категориям) -->
<div class="container">
<div class="filterDiv cars">БМВ</div>
<div class="filterDiv colors fruits">Апельсин</div>
<div class="filterDiv cars">Вольво</div>
<div class="filterDiv colors">Красный</div>
<div class="filterDiv cars animals">Мустанг</div>
<div class="filterDiv colors">Синий</div>
<div class="filterDiv animals">Кот</div>
<div class="filterDiv animals">Собака</div>
<div class="filterDiv fruits">Арбуз</div>
<div class="filterDiv fruits animals">Киви</div>
<div class="filterDiv fruits">Банан</div>
<div class="filterDiv fruits">Лимон</div>
<div class="filterDiv animals">Корова</div>
</div>
Шаг 2) Добавить CSS:
.container {
overflow: hidden;
}
.filterDiv {
float: left;
background-color: #2196F3;
color: #ffffff;
width: 100px;
line-height: 100px;
text-align: center;
margin: 2px;
display: none; /* Скрыто по умолчанию */
}
/* В класс "show" добавляется к отфильтрованные элементы */
.show {
display: block;
}
/* Стиль кнопок */
.btn {
border: none;
outline: none;
padding: 12px 16px;
background-color: #f1f1f1;
cursor: pointer;
}
/* Добавить светло-серый фон на наведении курсора мыши */
.btn:hover {
background-color: #ddd;
}
/* Добавить темный фон для активной кнопки */
.btn.active {
background-color: #666;
color: white;
}
Шаг 3) Добавить JavaScript:
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++) {
sw3RemoveClass(x[i], "show");
if (x[i].className.indexOf(c) > -1) sw3AddClass(x[i], "show");
}
}
// Показать отфильтрованные элементы
function sw3AddClass(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 sw3RemoveClass(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";
});
}
Попробуйте сами »