Módulo 2 · 2 de 9

HTML: a estrutura por trás de toda tela

Leitura: ~4 min

Se você já organizou camadas no Figma (nomeou frames, agrupou componentes, criou uma hierarquia clara) você já praticou o raciocínio por trás do HTML. A diferença é que no Figma você organiza visualmente. No HTML, você organiza com texto. Mas a lógica é a mesma: dar estrutura para que tudo faça sentido.

O que é HTML, sem mistério

HTML significa HyperText Markup Language, Linguagem de Marcação de Hipertexto. Não é uma linguagem de programação (o JavaScript é). O HTML é uma linguagem de marcação: ele diz ao navegador o que cada coisa é. Este texto é um título. Aquilo é um parágrafo. Isso é um botão. Aquela é uma imagem.

O HTML faz isso usando tags. Tags são palavras entre sinais de menor e maior, assim:

<h1>Este é um título</h1>
<p>Este é um parágrafo.</p>
<button>Clique aqui</button>

A maioria das tags tem uma abertura (<h1>) e um fechamento (</h1>), com o conteúdo no meio. Algumas poucas, como <img> e <br>, não envolvem conteúdo nenhum e por isso não têm fechamento: são os chamados elementos vazios. É assim que você vai vê-las ao inspecionar qualquer página. Você não precisa decorar todas as tags, existem dezenas, mas precisa entender o princípio: cada elemento na tela tem uma tag que diz o que ele é.

Camadas do Figma = estrutura do HTML

Pense na sua árvore de camadas no Figma. Você tem um frame principal (a página). Dentro dele, um frame de header. Dentro do header, o logo e um menu de navegação. Abaixo, o conteúdo principal. No final, o rodapé.

No HTML, essa mesma hierarquia existe. Veja como a estrutura do Figma e do HTML se espelham:

Figma HTML Frame principal <body> Header (logo + nav) <header> <nav> Conteúdo principal <main> <article> Rodapé <footer> A hierarquia de camadas do Figma espelha a estrutura do HTML. Organizar bem um e saber ler o outro.
Camadas do Figma e tags do HTML: a mesma lógica de hierarquia em dois mundos diferentes.

HTML semântico: quando a estrutura tem significado

Aqui está um conceito que separa quem entende HTML de verdade de quem só conhece por cima. No HTML, você pode usar uma tag genérica chamada <div> para tudo. Um <div> é como um frame sem nome no Figma, funciona, mas ninguém sabe o que aquilo é sem olhar dentro.

O HTML semântico substitui essas tags genéricas por tags com significado. Em vez de um <div> para o cabeçalho, você usa <header>. Em vez de um <div> para a navegação, usa <nav>. Em vez de um <div> para o conteúdo principal, usa <main>.

As tags semânticas mais comuns que você vai encontrar:

  • <header> : cabeçalho da página ou de uma seção
  • <nav> : menu de navegação
  • <main> : conteúdo principal (só pode ter um por página)
  • <article> : conteúdo independente, como um post ou uma notícia
  • <section> : uma seção temática do conteúdo
  • <aside> : conteúdo complementar, como uma barra lateral
  • <footer> : rodapé da página ou de uma seção
  • <h1> a <h6> : títulos, do mais importante ao menos importante

E por que isso importa para designers?

Por dois motivos grandes. Primeiro: SEO. Os mecanismos de busca usam as tags semânticas para entender do que a página trata. Um <h1> diz ao Google que aquele é o título mais importante da página. Se o dev coloca tudo em <div> com estilo visual de título, o Google até tenta interpretar: os sistemas de busca declaram trabalhar com o HTML que encontram, com ou sem tags semânticas. Mas aí a página deixa de comunicar sua hierarquia de graça. Headings claros ajudam o buscador a entender do que cada parte trata e a exibir melhor a página nos resultados. Só que o próprio Google avisa: HTML semântico não é fator de ranking direto, e trocar <div> por <h1> não sobe posição por si só. O benefício mais garantido está no segundo motivo.

Segundo, e talvez mais importante: acessibilidade. Pessoas que usam leitores de tela, como o NVDA ou o VoiceOver, navegam pelo HTML, não pelo visual. Quando a página usa tags semânticas, o leitor de tela sabe dizer "navegação com 5 links", "conteúdo principal", "rodapé". Quando é tudo <div>, o leitor de tela vê um mar de caixas sem significado. É como tentar se orientar em um prédio onde nenhuma porta tem placa.

HTML semântico é a base da acessibilidade, vamos ver isso mais adiante neste módulo. Ver Acessibilidade →

Checagem rápida

Sem nota, sem pressão. Responda de cabeça e depois abra para conferir.

Um dev te diz que "tanto faz" usar <div> ou <nav> para o menu, porque visualmente fica igual. Quem sai perdendo com essa escolha?

Quem usa leitor de tela, principalmente. Com <nav>, o leitor de tela anuncia "navegação" e a pessoa pula direto para o menu. Com <div>, aquilo vira só mais uma caixa sem significado, e a pessoa precisa percorrer tudo no braço. Visualmente fica igual; na experiência de quem depende de tecnologia assistiva, muda muito.

Você abre o inspetor e vê que o título grande da página é um <div> estilizado, não um <h1>. Por que isso é um sinal de alerta, mesmo parecendo idêntico na tela?

Porque o <div> não carrega significado: ele parece um título, mas não é. Um <h1> avisa ao leitor de tela e ao buscador que ali está o assunto principal da página. Uma <div> com cara de título comunica isso só para quem enxerga, e deixa o resto de fora.