Como filtrar elementos
- Página anterior Tabela de filtro
- Próxima página Menu de seleção suspensa de filtro
Aprenda a filtrar elementos com base em classes.
Filtrar elementos DIV
BMW
Laranja
Volvo
Vermelho
Ford
Azul
Gato
Cão
Melão
Kiwi
Banana
Limão
Vaca
BYD
Crie elementos DIV filtráveis
Primeiro passo - Adicionar HTML:
<!-- Botões de controle --> <div id="myBtnContainer"> <button class="btn active" onclick="filterSelection('todos')"> Mostrar todos</button> <button class="btn" onclick="filterSelection('carros')"> Carros</button> <button class="btn" onclick="filterSelection('animais')"> Animais</button> <button class="btn" onclick="filterSelection('frutas')"> Frutas</button> <button class="btn" onclick="filterSelection('cores')"> Cores</button> </div> <!-- Elementos filtráveis. Por favor, note que alguns possuem múltiplas classes (se pertencerem a várias categorias, podem usar essas classes) --> <div class="container"> <div class="filterDiv carros">BMW</div> <div class="filterDiv cores frutas">Laranja</div> <div class="filterDiv carros">Volvo</div> <div class="filterDiv cores">Vermelho</div> <div class="filterDiv carros">Ford</div> <div class="filterDiv cores">Azul</div> <div class="filterDiv animais">Gato</div> <div class="filterDiv animais">Cão</div> <div class="filterDiv frutas">Melão</div> <div class="filterDiv frutas animais">Kiwi</div> <div class="filterDiv frutas">Banana</div> <div class="filterDiv frutas">Limão</div> <div class="filterDiv animais">Vaca</div> </div>
Segundo passo - Adicionar CSS:
.container { transbordamento: escondido; } .filterDiv { flutuante: esquerda; cor de fundo: #2196F3; cor: #ffffff; largura: 100px; altura de linha: 100px; alinhamento de texto: centro; margem: 2px; exibição: none; /* Oculto por padrão */ } /* Adicionar classe "show" aos elementos filtrados */ .show { exibição: bloco; } /* Definir estilo do botão */ .btn { borda: none; contorno: none; largura: 12px 16px; cor de fundo: #f1f1f1; cursor: ponteiro; } /* Adicionar fundo cinza claro ao passar o mouse */ .btn:hover { cor de fundo: #ddd; } /* Adicionar fundo escuro ao botão ativo */ .btn.active { cor de fundo: #666; cor: branco; }
Terceiro passo - Adicionar JavaScript:
filterSelection("all") function filterSelection(c) { var x, i; x = document.getElementsByClassName("filterDiv"); if (c == "all") c = ";"; // Adicionar a classe "show" aos elementos filtrados (display:block) e remover a classe "show" dos elementos não selecionados for (i = 0; i < x.length; i++) { w3RemoveClass(x[i], "show"); if (x[i].className.indexOf(c) > -1) w3AddClass(x[i], "show"); } } // Mostrar elementos filtrados 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]; } } } // Ocultar elementos não selecionados 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(" "); } // Adicionar a classe ativa ao botão de controle atual (destacá-lo) 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"; }); }
- Página anterior Tabela de filtro
- Próxima página Menu de seleção suspensa de filtro