Menu dropdown
Parte da seção Practical Frontend do Journey de HTML da Coddy — lição 20 de 35.
Um menu suspenso (dropdown) é um item de navegação que mostra mais links quando o usuário passa o mouse ou foca nele. Embora os dropdowns possam ser construídos usando JavaScript, neste capítulo focamos em uma abordagem apenas com CSS, que utiliza :hover ou :focus-within para revelar o menu oculto.
Por que usá-los:
- Economiza espaço em barras de navegação.
- Mantém a interface limpa e organizada.
- Funciona bem para designs mobile-first e responsivos quando adaptado adequadamente.
HTML:
<div class="dropdown">
<button class="dropdown-button">Menu</button>
<div class="dropdown-content">
<a href="#">Option 1</a>
<a href="#">Option 2</a>
<a href="#">Option 3</a>
</div>
</div>CSS:
//O .dropdown é position: relative
//para que o conteúdo do dropdown possa ser posicionado corretamente com position: absolute.
.dropdown {
position: relative;
display: inline-block;
}//O .dropdown-content é ocultado por padrão usando display: none.
.dropdown-content {
display: none;
position: absolute;
}//Quando o usuário passa o mouse sobre o contêiner .dropdown,
//o .dropdown-content é exibido usando display: block.
.dropdown:hover .dropdown-content {
display: block;
}Com este código, ao passar o mouse sobre o contêiner do dropdown (incluindo o botão), o conteúdo do dropdown aparecerá.
Desafio
FácilVocê recebeu o HTML para um menu suspenso com um botão rotulado "Select Color" e três opções: Red, Green, Blue.
Sua tarefa é estilizar o menu suspenso com CSS para que:
- As opções fiquem ocultas por padrão.
- As opções se tornem visíveis quando o usuário passar o mouse sobre o contêiner do menu suspenso.
Folha de consulta
Um menu suspenso mostra mais links quando o usuário passa o mouse ou foca nele. Use :hover ou :focus-within para revelar o menu oculto.
Estrutura HTML:
<div class="dropdown">
<button class="dropdown-button">Menu</button>
<div class="dropdown-content">
<a href="#">Option 1</a>
<a href="#">Option 2</a>
<a href="#">Option 3</a>
</div>
</div>Implementação CSS:
.dropdown {
position: relative;
display: inline-block;
}
.dropdown-content {
display: none;
position: absolute;
}
.dropdown:hover .dropdown-content {
display: block;
}O contêiner do dropdown usa position: relative para que o conteúdo do dropdown possa ser posicionado com position: absolute. O conteúdo é ocultado por padrão com display: none e exibido ao passar o mouse com display: block.
Experimente você mesmo
<!DOCTYPE html>
<html>
<head>
<title>Dropdown menu</title>
<style>
body {
font-family: Arial, sans-serif;
padding: 50px;
background-color: #f0f0f0;
}
.dropdown {
position: relative;
display: inline-block;
}
.dropdown-button {
padding: 10px 20px;
font-size: 16px;
cursor: pointer;
border: 1px solid #333;
border-radius: 5px;
background-color: #ffffff;
}
.dropdown-content {
position: absolute;
top: 100%;
left: 0;
background-color: #ffffff;
min-width: 160px;
border: 1px solid #ccc;
border-radius: 5px;
box-shadow: 0 2px 5px rgba(0,0,0,0.2);
z-index: 1;
}
.dropdown-content a {
display: block;
padding: 10px;
text-decoration: none;
color: #333;
}
.dropdown-content a:hover {
background-color: #f2f2f2;
}
/* Show dropdown on hover or focus */
.dropdown:hover .dropdown-content,
.dropdown:focus-within .dropdown-content {
}
</style>
</head>
<body>
<div class="dropdown">
<button class="dropdown-button">Select Color</button>
<div class="dropdown-content">
<a href="#">Red</a>
<a href="#">Green</a>
<a href="#">Blue</a>
</div>
</div>
</body>
</html>
Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.