Como pesquisar/filtrar o menu suspenso
- Página anterior Filtrar elemento
- Próxima página Classificação de lista
Aprenda a usar CSS e JavaScript para pesquisar itens no menu suspenso.
Filtre o menu suspenso
Crie um menu suspenso clicável
Crie um menu suspenso que aparece quando o usuário clica no botão.
Primeiro passo - Adicionar HTML:
<div class="dropdown"> <button onclick="myFunction()" class="dropbtn">Menu suspenso</button> <div id="myDropdown" class="dropdown-content"> <input type="text" placeholder="Pesquisar.." id="myInput" onkeyup="filterFunction()"> <a href="#about">Sobre</a> <a href="#base">Base</a> <a href="#blog">Blog</a> <a href="#contact">Contato</a> <a href="#custom">Personalizado</a> <a href="#support">Suporte</a> <a href="#tools">Ferramentas</a> </div> </div>
Explicação do exemplo:
Você pode usar qualquer elemento para abrir o menu suspenso, por exemplo, um elemento <button>, <a> ou <p>.
Use um elemento de contêiner (como <div>) para criar o menu suspenso e adicione os links do menu suspenso nele.
Envolver o botão e outro <div> com um elemento <div> para usar CSS para posicionar corretamente o menu suspenso.
Segundo passo - Adicionar CSS:
/* Botão de menu suspenso */ .dropbtn { background-color: #04AA6D; color: white; padding: 16px; font-size: 16px; border: none; cursor: pointer; } /* Botão do menu suspenso ao passar o mouse e ao focar */ .dropbtn:hover, .dropbtn:focus { background-color: #3e8e41; } /* Campo de pesquisa */ #myInput { box-sizing: border-box; background-image: url('searchicon.png'); background-position: 14px 12px; background-repeat: no-repeat; font-size: 16px; padding: 14px 20px 12px 45px; border: none; border-bottom: 1px solid #ddd; } /* Quando a caixa de entrada de pesquisa ganha foco / é clicada */ #myInput:focus {outline: 3px solid #ddd;} /* Contêiner <div> - usado para posicionar o conteúdo do menu suspenso */ .dropdown { position: relative; display: inline-block; } /* Conteúdo do menu suspenso (por padrão, está oculto) */ .dropdown-content { display: none; position: absolute; background-color: #f6f6f6; min-width: 230px; border: 1px solid #ddd; z-index: 1; } /* Links dentro do menu suspenso */ .dropdown-content a { color: black; padding: 12px 16px; text-decoration: none; display: block; } /* Mudar a cor do link ao passar o mouse sobre o menu suspenso */ .dropdown-content a:hover {background-color: #f1f1f1} /* Mostrar menu suspenso (ao clicar no botão do menu suspenso, use JS para adicionar essa classe ao contêiner .dropdown-content) */ .show {display:block;}
Explicação do exemplo:
Já estilizamos o botão dropdown do menu, incluindo cor de fundo, margem interna, efeito ao passar o mouse, etc.
.dropdown
a classe é usada position:relative
porque queremos que o conteúdo dropdown esteja exatamente abaixo do botão dropdown (usando position:absolute
implementação).
.dropdown-content
a classe contém o menu dropdown real. Padrão, ele está oculto e é exibido ao passar o mouse (veja a seguir). Nota:min-width
definido como 230px. Você pode modificá-lo conforme necessário. Dica: Se você quiser que a largura do conteúdo dropdown seja igual ao botão dropdown, você pode definir width
Definido como 100%(e overflow
Definido como auto, para ativar a rolagem em telas pequenas).
A caixa de pesquisa (#myInput) já foi estilizada para se adaptar ao menu dropdown interno. Adicionamos um ícone de pesquisa no lado esquerdo da caixa de pesquisa, indicando que, na verdade, é uma caixa de pesquisa.
Terceiro passo - Adicionar JavaScript:
/* Quando o usuário clicar no botão, alternar entre ocultar e mostrar o conteúdo dropdown */ function myFunction() { document.getElementById("myDropdown").classList.toggle("show"); } function filterFunction() { var input, filter, ul, li, a, i; input = document.getElementById("myInput"); filter = input.value.toUpperCase(); div = document.getElementById("myDropdown"); a = div.getElementsByTagName("a"); for (i = 0; i < a.length; i++) { txtValue = a[i].textContent || a[i].innerText; if (txtValue.toUpperCase().indexOf(filter) > -1) { a[i].style.display = ""; } else { a[i].style.display = "none"; } } }
Páginas relacionadas
Tutorial:Menu suspenso CSS
Tutorial:Como criar um menu suspenso ativo
- Página anterior Filtrar elemento
- Próxima página Classificação de lista