Fundamentos da Web /A estrutura do documento
Capítulo 17
Organizar o projeto completo
4 min de leitura 750 palavras 1 gravura
Neste capítulo você vai revisar cinco páginas e separar conteúdo de estilo.
Seu ponto de partida
Estude depois do capítulo 16. O exemplo deste capítulo é 17-organizar-projeto, 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.
Uma pasta tem papéis claros
O projeto reúne cinco páginas HTML, uma folha principal, imagens e mídia local. Cada etapa é independente; não depende de arquivos do capítulo anterior. A pasta inicio é sua base de prática, e a raiz é a referência.
Mover um recurso exige atualizar quem aponta para ele. Não copie toda a pasta .trabalho para resolver um caminho. Ela contém fontes e conferência, não recursos do aluno.
Faça no seu exemplo
Confira a árvore final.
index.html
palestrantes.html
programacao.html
local.html
inscricao.html
assets/stylesheets/main.css
assets/imagens/
assets/midia/
Mude uma coisa e preveja
Numa cópia, renomeie somente poster.png e atualize o poster do vídeo.
Anote o que você acha que vai acontecer antes de salvar e recarregar.
Recarregue e confira
O vídeo mantém sua imagem inicial quando os dois nomes correspondem.
Se não acontecer
Se usar um caminho absoluto da máquina, a próxima cópia vai falhar. Prefira os caminhos relativos fornecidos.
CSS próprio evita consertos espalhados
A folha compartilhada centraliza a aparência. Classes descrevem funções, como cartao e aviso. Antes de acrescentar uma regra duplicada, confira se uma regra existente atende ao objetivo.
Não acrescente !important para cada conflito. Volte ao seletor e à cascata. Uma folha curta, coerente e compreensível é mais fácil de alterar que uma coleção de remendos.
Faça no seu exemplo
Confira o grupo compartilhado.
header, main, footer { max-width: 64rem; margin-inline: auto; }
Mude uma coisa e preveja
Troque somente o limite para 58rem e abra as cinco páginas.
Anote o que você acha que vai acontecer antes de salvar e recarregar.
Recarregue e confira
Todas compartilham o novo limite.
Se não acontecer
Se uma não acompanhar, confira seu link da folha e a cópia aberta.
Revise conteúdo e consistência
Confira title, h1 e aria-current em cada página. Leia nomes dos links, rótulos e mensagens. A revisão editorial evita que uma cópia de cabeçalho anuncie a página errada.
O evento é fictício. Nenhuma página promete reserva real ou fornece endereço pessoal. A confirmação do formulário permanece explícita sobre a simulação.
Faça no seu exemplo
Abra as cinco páginas em sequência.
Início → Palestrantes → Programação → Local → Inscrição → Início
Mude uma coisa e preveja
Mude somente o title de local.html para Local do evento fictício.
Anote o que você acha que vai acontecer antes de salvar e recarregar.
Recarregue e confira
A aba dessa página muda; as outras mantêm seus próprios títulos.
Se não acontecer
Não substitua todos os titles por um texto genérico. Eles devem ajudar a distinguir as páginas.

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.
-
Confira a autonomia da etapa.
-
Revise o item atual nas cinco páginas.
-
Encontre e retire uma regra temporária de experimento.
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.
-
A cópia completa abre com os recursos de sua própria pasta.
-
Somente o link correspondente tem aria-current em cada página.
-
Restaure os valores de referência e conserve somente regras com finalidade.
Quando seguir
Você entende a organização e percorre todas as páginas. Se ainda precisa de ajuda, repita a experiência pequena antes de avançar.
O arquivo completo
Referência do exemplo 17-organizar-projeto, 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 & 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> <a href="local.html">Local</a> <a href="inscricao.html">Inscriçã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><section class="hero" aria-labelledby="participe"><h2 id="participe">Uma ideia por experiência</h2><p>14 de setembro. Recife. Evento fictício.</p></section><section aria-labelledby="beneficios"><h2 id="beneficios">O que você encontra</h2><ul class="beneficios"><li>Explicações curtas</li><li>Exemplos para alterar</li><li>Tempo para conferir</li></ul><h2>Seu percurso de prática</h2><ol><li>Abra a página.</li><li>Mude uma coisa.</li><li>Confira o resultado.</li></ol></section></main>
<footer><p>Conferência fictícia. Exercício local.</p></footer>
</body>
</html>
assets/simulacao.js
const form = document.querySelector('#inscricao');
const button = document.querySelector('#simular');
const status = document.querySelector('#retorno');
button.disabled = false;
form.addEventListener('submit', event => {
event.preventDefault();
status.textContent = 'Simulação concluída. Nada foi enviado ou gravado.';
status.focus();
});
form.addEventListener('reset', () => { status.textContent = ''; });