Pular para o conteúdo
murad.guide

Fundamentos da Web /A estrutura do documento

Capítulo 9

Uma página que cabe no celular

4 min de leitura 752 palavras 1 gravura

Neste capítulo você vai conferir largura e ajustar uma regra conforme o espaço disponível.

Seu ponto de partida

Estude depois do capítulo 08. O exemplo deste capítulo é 09-responsividade, no pacote que acompanha o volume. Copie a pasta inicio para um diretório de prática e preserve o original. A raiz do exemplo é a referência concluída desta etapa. Sua cópia permite experimentar sem perder a referência.

Abra index.html da cópia com dois cliques. Edite o mesmo arquivo num editor de texto simples. Abrir no disco não publica a página.

Como praticar

Leia a explicação e digite ou confira o código indicado. Mude uma coisa. Antes de conferir, anote sua previsão. Salve, recarregue e compare. Se não acontecer o esperado, investigue o erro antes de avançar. Cada experiência parte dos valores da referência. Depois de conferir, desfaça somente a mudança desse experimento antes de começar a próxima lição. Você pode parar depois de uma lição e retomar mais tarde.

Comece pela tela estreita

Responsividade adapta a apresentação ao espaço disponível. Não é uma segunda página para celular. Viewport, limites flexíveis e imagens fluidas já ajudam. Nesta etapa entra programacao.html, com uma agenda simples em lista antes de aprendermos tabela.

Abra as três páginas e estreite a janela. Se algum elemento transbordar, encontre sua largura antes de adicionar uma regra por tentativa.

Faça no seu exemplo

Confira o limite geral.

body { margin: 0; padding-inline: 1rem; }
nav { display: flex; flex-wrap: wrap; gap: 1rem; }

Mude uma coisa e preveja

Troque somente o espaço do menu para 1.5rem.

Anote o que você acha que vai acontecer antes de salvar e recarregar.

Recarregue e confira

O menu quebra em mais linhas quando necessário, sem esconder links.

Se não acontecer

Não reduza a fonte para forçar todos os links numa linha. A quebra é uma solução válida.

Uma media query responde ao espaço

Media query condiciona um grupo de regras. Max-width: 40rem significa aplicar quando a área disponível for até esse limite. O volume usa a regra para reduzir espaço interno em telas pequenas.

Escolha o limite porque o conteúdo precisa, não para perseguir um modelo de aparelho. O navegador pode estar ampliado ou numa janela estreita em qualquer computador.

Faça no seu exemplo

Confira no fim de main.css.

@media (max-width: 40rem) {
  main { padding: 1rem; }
}

Mude uma coisa e preveja

Troque somente o padding interno desta regra para .75rem.

Anote o que você acha que vai acontecer antes de salvar e recarregar.

Recarregue e confira

A mudança aparece na janela estreita; na larga, a regra geral continua.

Se não acontecer

Se mudar sempre, confira as chaves. A declaração pode ter ficado fora da media query.

Zoom também reduz o espaço útil

Ampliar para 200% ajuda a testar leitura e controles. O conteúdo deve crescer sem desaparecer ou ficar preso numa altura fixa. Uma tabela larga será tratada numa etapa própria, com rolagem localizada e identificada.

Teste teclado com Tab e Enter. O foco visível informa onde você está. Não esconda outline para deixar a página aparentemente limpa.

Faça no seu exemplo

Use o menu do navegador para ampliar a página.

Zoom do navegador: 200%

Mude uma coisa e preveja

Amplie e percorra os links sem usar o mouse.

Anote o que você acha que vai acontecer antes de salvar e recarregar.

Recarregue e confira

Os links continuam alcançáveis e o conteúdo não exige rolagem horizontal geral.

Se não acontecer

Se um texto cortar, investigue height fixa ou width grande. Não desative o zoom para esconder o problema.

Trecho do resultado de referência do capítulo 09

A captura mostra um trecho da referência concluída. Abra e percorra o exemplo para conferir o restante. Experimentos temporários podem produzir outra aparência; restaure os valores indicados antes de comparar.

Atividades para fazer antes das respostas

Use uma nova cópia do exemplo. Tente aplicar o que aprendeu antes de consultar os comentários.

  1. Confira três páginas numa janela estreita.

  2. Mude uma regra da media query e compare larguras.

  3. Teste zoom real de 200%.

Respostas comentadas

Compare sua explicação e o que realmente aconteceu. Outra solução pode funcionar se cumprir o objetivo e preservar o acesso ao conteúdo.

  1. Nenhum link necessário fica oculto.

  2. A regra só altera a faixa condicionada.

  3. Texto e controles continuam disponíveis.

Quando seguir

Você reconhece uma adaptação de espaço e testa sem reduzir a leitura. Se ainda precisa de ajuda, repita a experiência pequena antes de avançar.

O arquivo completo

Referência do exemplo 09-responsividade, reproduzida aqui para que você possa conferir sem sair da página.

index.html

<!doctype html>
<html lang="pt-BR">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Conferência de Estilos</title>
<link rel="stylesheet" href="assets/stylesheets/main.css">
</head>
<body>
<a class="pular" href="#conteudo">Pular para o conteúdo</a>
<header><h1>Conferência de Estilos</h1><p>Pequenos passos para aprender HTML &amp; CSS.</p><nav aria-label="Principal"><a href="index.html" aria-current="page">Início</a> <a href="palestrantes.html">Palestrantes</a> <a href="programacao.html">Programação</a> </nav></header>
<main id="conteudo" tabindex="-1"><section aria-labelledby="sobre"><h2 id="sobre">Sobre o evento</h2><p>Um evento fictício para aprender fazendo.</p></section><p class="aviso">Evento fictício. Não há inscrições reais.</p><section class="destaques" aria-label="Destaques"><article class="cartao"><h2>Aprender</h2><p>Um passo por vez.</p></article><article class="cartao"><h2>Praticar</h2><p>Uma mudança para conferir.</p></article></section></main>
<footer><p>Conferência fictícia. Exercício local.</p></footer>
</body>
</html>

assets/stylesheets/main.css

:focus-visible { outline: 3px solid #b04d00; outline-offset: 3px; }
.pular { position: absolute; left: -10000px; }
.pular:focus { position: static; display: block; padding: 1rem; background: white; }
body { background: #eef4f7; color: #203246; }
h1 { color: #174d69; }
a { color: #174d69; text-underline-offset: .2em; }
.aviso { color: #703c16; font-weight: 700; }
body { font-family: Arial, sans-serif; font-size: 1.05rem; line-height: 1.6; }
h1 { font-size: 2.2rem; line-height: 1.2; }
h2 { line-height: 1.3; }
* { box-sizing: border-box; }
body { margin: 0; padding-inline: 1rem; }
header, main, footer { max-width: 64rem; margin-inline: auto; }
header, footer { padding: 1.5rem 0; }
main { padding: 1.5rem; background: white; border-radius: .6rem; }
section { margin-block: 1.5rem; }
.cartao { border: 1px solid #a6b8c3; padding: 1rem; border-radius: .4rem; }
.destaques { display: flex; flex-wrap: wrap; gap: 1rem; }
.destaques > .cartao { flex: 1 1 16rem; }
nav { display: flex; flex-wrap: wrap; gap: 1rem; }
[aria-current=page] { font-weight: 700; }
@media (max-width: 40rem) { main { padding: 1rem; } }