Navegação Mobile-First
Parte da seção Practical Frontend do Journey de HTML da Coddy — lição 8 de 35.
Navegação mobile-first significa começar com um menu simples e amigável ao toque para telas pequenas, e depois aprimorá-lo para telas maiores.
Comece com uma estrutura básica de navegação móvel: dentro do elemento <nav>, inclua um botão e uma lista.
<nav class="main-nav">
<button class="menu-toggle">Menu</button>
<ul class="nav-list">
<li><a href="#">Home</a></li>
<li><a href="#">About</a></li>
<li><a href="#">Services</a></li>
<li><a href="#">Contact</a></li>
</ul>
</nav>Aplique os estilos móveis primeiro. Em telas pequenas → mostre um botão de “menu” e esconda a lista.
.menu-toggle {
display: block;
//mais alguns estilos
}
.nav-list {
display: none;
//mais alguns estilos
}Em seguida, use media queries para telas maiores. Em telas maiores → mostre o menu como uma lista horizontal no topo e oculte o botão de “menu”.
@media (min-width: 768px) {
.menu-toggle {
display: none;
}
.nav-list {
display: flex;
}
}Esta abordagem garante que a navegação seja otimizada primeiro para dispositivos móveis e, em seguida, aprimorada para telas maiores.
Desafio
FácilDado um arquivo HTML com uma navegação contendo um botão de menu e uma lista, atualmente a lista está sempre visível.
Sua tarefa é corrigir o estilo de navegação mobile-first ao:
- Tornar a lista de navegação oculta por padrão em telas móveis.
- Tornar a lista de navegação visível em telas maiores (
display: flex).
Folha de consulta
A navegação mobile-first começa com um menu simples e amigável ao toque para telas pequenas, e depois o aprimora para telas maiores.
Estrutura básica de navegação móvel:
<nav class="main-nav">
<button class="menu-toggle">Menu</button>
<ul class="nav-list">
<li><a href="#">Home</a></li>
<li><a href="#">About</a></li>
<li><a href="#">Services</a></li>
<li><a href="#">Contact</a></li>
</ul>
</nav>Estilização móvel (mostrar botão, ocultar lista):
.menu-toggle {
display: block;
}
.nav-list {
display: none;
}Estilização para desktop com media queries (ocultar botão, mostrar lista horizontal):
@media (min-width: 768px) {
.menu-toggle {
display: none;
}
.nav-list {
display: flex;
}
}Experimente você mesmo
<!DOCTYPE html>
<html>
<head>
<title>Mobile-First Navigation</title>
<style>
:root {
--primary-color: #4a6de5;
--text-color: #333333;
}
.nav-container {
display: flex;
justify-content: space-between;
align-items: center;
}
.logo {
font-weight: bold;
color: var(--primary-color);
text-decoration: none;
font-size: 1.5rem;
}
.menu-toggle {
display: block;
background-color: var(--primary-color);
color: white;
border: none;
padding: 0.5rem 1rem;
cursor: pointer;
}
.nav-list {
list-style: none;
padding: 0;
margin: 1rem 0 0 0;
width: 100%;
}
.nav-list li a {
color: var(--text-color);
text-decoration: none;
display: block;
padding: 0.5rem 0;
}
@media (min-width: 768px) {
.menu-toggle {
display: none;
}
.nav-list {
margin: 0;
width: auto;
}
.nav-list li {
margin: 0 0 0 1.5rem;
}
}
</style>
</head>
<body>
<header class="site-header">
<nav class="nav-container">
<a href="#" class="logo">MySite</a>
<button class="menu-toggle">Menu</button>
<ul class="nav-list">
<li><a href="#">Home</a></li>
<li><a href="#">About</a></li>
<li><a href="#">Services</a></li>
<li><a href="#">Contact</a></li>
</ul>
</nav>
</header>
</body>
</html>Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições de Practical Frontend
2Estratégia Mobile-First
O que significa “mobile-first”Tipografia Mobile-FirstNavegação Mobile-FirstImagens Mobile-FirstFormulários Mobile-FirstDesafio de Recapitulação