Tag HTML <main>
A tag define o conteúdo principal do documento em HTML5. Descrição, atributos e exemplos da tag.
A tag <main> é um elemento de bloco introduzido na especificação do HTML5. Ela envolve o conteúdo dominante do <body> do documento — o conteúdo que é exclusivo daquele documento e não se repete nas demais páginas do site, como o cabeçalho do site, menu de navegação, barra lateral, campo de busca ou rodapé.
Esta página aborda para que serve o <main>, como ele se encaixa em uma estrutura de documento completa junto ao <header>, <nav> e <footer>, como ele viabiliza links "pular para o conteúdo" e as regras sobre o uso de mais de um <main> em uma página.
Onde o <main> pode e não pode ser usado
O elemento <main> não pode ser colocado dentro de um elemento <article>, <aside>, <footer>, <header> ou <nav> — <main> é uma região de nível superior, portanto esses elementos contenedores não se aplicam a ele.
Este elemento faz parte da árvore DOM, mas é excluído do esboço do documento, ao contrário dos elementos de cabeçalho como <h1> a <h6>, que contribuem para ele.
Acessibilidade e o landmark main
<main> representa o landmark ARIA main. Tecnologias assistivas como leitores de tela expõem landmarks para que os usuários possam acessar diretamente as principais regiões de uma página. Prefira o elemento <main> ao invés de adicionar role="main" a um elemento genérico como um <div>, pois o <main> carrega esse papel implicitamente.
Deve haver exatamente um landmark main por página. Usuários de teclado e leitores de tela também podem pular conteúdo repetido (navegação, banners, anúncios) usando a técnica de "pular navegação". Se você atribuir um id ao elemento <main>, esse id se torna o destino de um link de atalho — veja o exemplo abaixo.
Sintaxe
A tag <main> vem em pares. O conteúdo é escrito entre as tags de abertura (<main>) e fechamento (</main>).
Exemplo da tag HTML <main>:
Tag HTML <main>
<!DOCTYPE html>
<html>
<head>
<title>Title of the document</title>
</head>
<body>
<main>
<h1>Programming languages</h1>
<p>
Languages HTML and CSS are intended for site layout.
</p>
<article>
<h2>HTML</h2>
<p>
HTML (Hyper Text Markup Language) is a language of hypertext markup, which is used to create web pages.
</p>
<p>... </p>
<p>... </p>
</article>
<article>
<h2>CSS</h2>
<p>
CSS is a language of styles, defining the display of HTML documents.
</p>
<p>... </p>
</article>
</main>
</body>
</html><main> em uma estrutura de documento completa
Em uma página real, <main> fica ao lado dos outros elementos landmark. O cabeçalho, a navegação e o rodapé se repetem em todas as páginas, portanto ficam fora do <main>; apenas o conteúdo específico da página vai dentro dele.
<!DOCTYPE html>
<html>
<head>
<title>Programming languages</title>
</head>
<body>
<header>
<h1>My Web Tutorials</h1>
</header>
<nav>
<a href="/html">HTML</a> |
<a href="/css">CSS</a> |
<a href="/js">JavaScript</a>
</nav>
<main>
<h2>Programming languages</h2>
<p>HTML and CSS are intended for site layout.</p>
</main>
<footer>
<p>© 2026 My Web Tutorials</p>
</footer>
</body>
</html>Adicionando um link "pular para o conteúdo principal"
Um link de atalho permite que usuários de teclado e leitores de tela pulem diretamente a navegação repetida. Associe o href do link ao id do elemento <main>:
<body>
<a href="#main-content">Skip to main content</a>
<header>
<h1>My Web Tutorials</h1>
</header>
<nav>
<a href="/html">HTML</a> |
<a href="/css">CSS</a>
</nav>
<main id="main-content">
<h2>Programming languages</h2>
<p>HTML and CSS are intended for site layout.</p>
</main>
</body>Ao ativar o link, o foco é movido para #main-content, de modo que o usuário chega diretamente ao conteúdo principal da página.
Usando mais de um <main> com o atributo hidden
Uma página pode conter apenas um elemento <main> visível. Quaisquer elementos <main> adicionais devem ter o atributo hidden. Isso é útil em aplicações de página única (SPAs), onde várias "visualizações" existem no DOM ao mesmo tempo, mas apenas a visualização ativa é exibida:
<main>
<h2>Home view</h2>
<p>This view is visible.</p>
</main>
<main hidden>
<h2>Settings view</h2>
<p>This view is in the DOM but hidden until activated.</p>
</main>Quando o usuário muda de visualização, o script alterna o atributo hidden para que exatamente um <main> fique visível por vez.
Atributos
A tag <main> suporta os Atributos Globais e os Atributos de Evento.
Estilizando o elemento <main>
<main> é apenas um contêiner estrutural, então estilize-o como qualquer elemento de bloco. Por conter o conteúdo principal da página, é um lugar natural para definir a largura de leitura geral, o preenchimento e o espaçamento:
main {
display: block; /* ensures block layout in older browsers */
max-width: 800px;
margin: 0 auto; /* center the content column */
padding: 20px;
background-color: #f9f9f9;
}