Jak filtrować elementy
- Poprzednia strona Tabela filtracyjna
- Następna strona Rozwijane menu filtracyjne
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
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"; }); }
- Poprzednia strona Tabela filtracyjna
- Następna strona Rozwijane menu filtracyjne