How to filter elements
- Page précédente Tableau de filtrage
- Page suivante Menu déroulant de filtrage
Learn how to filter DIV elements based on class names.
Filter DIV elements
BMW
Orange
Volvo
Red
Ford
Blue
Cat
Dog
Melon
Kiwi
Banana
Lemon
Cow
BYD
Create filterable DIV elements
Step 1 - Add HTML:
<!-- Control buttons --> <div id="myBtnContainer"> <button class="btn active" onclick="filterSelection('all')">Show all</button> <button class="btn" onclick="filterSelection('cars')">Cars</button> <button class="btn" onclick="filterSelection('animals')">Animals</button> <button class="btn" onclick="filterSelection('fruits')">Fruits</button> <button class="btn" onclick="filterSelection('colors')">Colors</button> </div> <!-- Elements filtrables. Veuillez noter que certains ont plusieurs noms de classe (si ils appartiennent à plusieurs catégories, vous pouvez utiliser ces noms de classe) --> <div class="container"> <div class="filterDiv cars">BMW</div> <div class="filterDiv colors fruits">Orange</div> <div class="filterDiv cars">Volvo</div> <div class="filterDiv colors">Red</div> <div class="filterDiv cars">Ford</div> <div class="filterDiv colors">Blue</div> <div class="filterDiv animals">Chat</div> <div class="filterDiv animals">Chien</div> <div class="filterDiv fruits">Pastèque</div> <div class="filterDiv fruits animals">Kiwi</div> <div class="filterDiv fruits">Banane</div> <div class="filterDiv fruits">Citron</div> <div class="filterDiv animals">Vache</div> </div>
Étape 2 - Ajouter CSS :
.container { survol: caché; } .filterDiv { flottant: gauche; couleur de fond: #2196F3; couleur: #ffffff; largeur: 100px; hauteur de ligne: 100px; alignement de texte: centre; marge: 2px; affichage: invisible; /* Masqué par défaut */ } /* Ajouter la classe "show" aux éléments filtrés */ .show { affichage: bloc; } /* Définir le style des boutons */ .btn { bordure: none; contour: none; marge: 12px 16px; couleur de fond: #f1f1f1; curseur: pointeur; } /* Ajouter un fond clair lors du survol de la souris */ .btn:hover { couleur de fond: #ddd; } /* Ajouter un fond foncé à la bouton active */ .btn.active { couleur de fond: #666; couleur: blanc; }
Étape 3 - Ajouter JavaScript :
filterSelection("all") function filterSelection(c) { var x, i; x = document.getElementsByClassName("filterDiv"); if (c == "all") c = ""; // Ajouter la classe "show" aux éléments filtrés (display:block) et supprimer la classe "show" des éléments non sélectionnés for (i = 0; i < x.length; i++) { w3RemoveClass(x[i], "show"); if (x[i].className.indexOf(c) > -1) w3AddClass(x[i], "show"); } } // Afficher les éléments filtrés 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]; } } } // Cacher les éléments non sélectionnés 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(" "); } // Ajouter la classe active actuelle au bouton de contrôle (la rendre en surbrillance) 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"; }); }
- Page précédente Tableau de filtrage
- Page suivante Menu déroulant de filtrage