O que é HTML semântico
HTML semântico significa escolher cada tag pelo que o conteúdo é: a navegação vai em <nav>, o conteúdo principal em <main>, um post de blog em <article>. As tags parecem caixas comuns, mas dizem ao navegador, aos leitores de tela e aos buscadores o que cada parte da página faz. Aqui está uma página completa montada com as tags semânticas de layout, cada uma com contorno e rótulo:
Apague o elemento <style> e a página parece texto simples, mas a estrutura continua lá para quem lê o código e para programas que o leem sem olhar os pixels.
As tags semânticas de layout
| Tag | Use para | Landmark no leitor de tela |
|---|---|---|
<header> | A introdução da página ou de um artigo: logo, título, autoria | banner (só quando não está dentro de article, aside, main, nav ou section) |
<nav> | Um bloco de links de navegação principais | navigation |
<main> | O conteúdo exclusivo desta página, uma vez por página | main |
<article> | Uma peça independente que faz sentido sozinha: um post, um comentário, um card de produto | nenhum por padrão |
<section> | Um grupo temático de conteúdo com um título próprio | region, só quando tem um nome acessível |
<aside> | Conteúdo relacionado ao lado do fluxo principal: uma barra lateral, uma nota | complementary |
<footer> | Informações de fechamento da página ou de um artigo: copyright, autor, links | contentinfo (só no nível da página) |
Cada tag tem a sua própria página com mais detalhes: header, nav, section e footer. Esta página mostra como elas se encaixam.
Por que não usar só div
Uma página feita só de elementos <div> pode parecer idêntica a uma semântica. A diferença está no que a marcação diz. Aperte os botões para contornar os elementos que carregam significado em cada versão:
A versão com divs encontra 0, a versão semântica encontra 4. É isso que as tecnologias assistivas enxergam: quem usa leitor de tela pode pular direto para a navegação ou para o conteúdo principal na página semântica, e precisa ler tudo na página de divs. Nomes de classe como class="nav" não significam nada para o navegador.
<div> continua sendo a escolha certa para caixas que existem só para estilo ou layout, como o wrapper flex .cols do primeiro exemplo.
main, article e aside
<main> envolve o que é exclusivo desta página e aparece uma vez. Dentro dele, <article> marca conteúdo que faria sentido sozinho se fosse copiado para outro site, e <aside> marca conteúdo relacionado que poderia ser removido sem quebrar o artigo:
O artigo tem o seu próprio <header> e <footer>. Eles não se limitam ao nível da página: cada um introduz ou fecha o article ou section mais próximo. O elemento <time datetime> dá a data num formato legível por máquina enquanto a mostra num formato legível por pessoas.
Verifique a estrutura dos títulos
Os títulos são a outra metade da estrutura. Quem usa leitor de tela muitas vezes percorre a página de título em título, então os níveis devem se ler como um sumário, sem níveis pulados. Este script imprime a estrutura da página em que roda:
O h4 embaixo de "Brewing" pula um nível. Troque por h3 e a estrutura fica limpa. Escolha os níveis de título pela estrutura e mude o tamanho com CSS se quiser maiores ou menores.
Mais tags semânticas
Semântica não é só layout. Estas tags de texto também carregam significado:
| Tag | Significado |
|---|---|
<strong> | Texto importante (negrito por padrão) |
<em> | Ênfase (itálico por padrão) |
<figure> e <figcaption> | Uma imagem, gráfico ou trecho de código com a sua legenda |
<time datetime="..."> | Uma data ou hora num formato legível por máquina |
<address> | Dados de contato do autor da página ou do artigo |
<mark> | Texto destacado, como um resultado de busca |
<abbr title="..."> | Uma abreviação com a sua forma completa |
<button> | Algo que executa uma ação |
Passe o mouse sobre a abreviação "W3C" para ver a forma completa numa dica.
Erros comuns
- Usar uma tag pela aparência.
<blockquote>é para citações, não para recuo;<h3>é um nível de título, não um texto em negrito de tamanho médio. Estilize com CSS. - Envolver tudo em
<section>. Uma section deve ter um título e um tema. Se você precisa de uma caixa para estilo, use<div>. - Mais de um
<main>visível. Mantenha um por página, e nunca o coloque dentro de<article>,<aside>,<header>,<nav>ou<footer>. - Colocar toda lista de links em
<nav>. Reserve para blocos de navegação principais, como o menu do site ou um sumário. Alguns links num rodapé não precisam dela. - Elementos
<div>clicáveis. Uma<div onclick>não é alcançável pelo teclado. Use<button>para ações e<a href>para navegação.
Perguntas frequentes
O que é HTML semântico?
HTML semântico é a marcação em que cada tag descreve o significado do seu conteúdo: <nav> para navegação, <article> para uma peça independente, <button> para um botão. Assim o navegador, os leitores de tela e os buscadores entendem a página sem adivinhar a partir de nomes de classe ou estilos.
Quais são as tags semânticas do HTML?
As tags de layout são <header>, <nav>, <main>, <article>, <section>, <aside> e <footer>. Outras tags semânticas comuns são <figure>, <figcaption>, <time>, <address>, <strong>, <em> e os títulos de <h1> a <h6>.
A div é um elemento semântico?
Não. <div> não tem significado próprio; é uma caixa genérica para estilo e layout. Use quando nenhuma tag semântica serve, e use <header>, <main>, <nav> e as outras quando alguma serve.
Para que serve a tag aside?
<aside> guarda conteúdo relacionado ao conteúdo principal, mas fora do seu fluxo: uma barra lateral, uma caixa de links relacionados, uma nota de glossário ou uma citação em destaque. No nível da página, os leitores de tela a listam como um landmark complementar.
Quantos elementos main uma página pode ter?
Um <main> visível por página. Ele envolve o conteúdo exclusivo daquela página e não deve ficar dentro de <header>, <nav>, <article>, <aside> ou <footer>.
HTML semântico ajuda no SEO?
Ajuda os buscadores a entender qual parte da página é o conteúdo principal, qual é a navegação e como os títulos se relacionam. Sozinho ele não é um atalho de ranqueamento, mas elimina o trabalho de adivinhação e melhora a acessibilidade, o que já vale a pena por si só.