Menu

Tag div no HTML: o que é, div class, layout e estilo

A tag <div> é um contêiner block genérico, sem significado próprio. Veja como agrupar conteúdo com ela, estilizá-la com uma classe, montar layouts com divs e flexbox, e quando uma tag semântica ou um botão é a escolha melhor.

Esta página tem editores executáveis - edite, execute e veja a saída na hora.

O que a tag div faz

<div> (abreviação de division, divisão) é um contêiner genérico. Ela agrupa elementos para que você possa estilizá-los, posicioná-los ou manipulá-los com script como uma unidade. Sozinha, ela não tem aparência nenhuma: sem margem, sem borda, sem fonte especial. É um elemento block, então começa numa linha nova e se estende pela largura disponível.

Remova a linha border do estilo e as divs ficam invisíveis: essa é a aparência padrão de uma div. Tudo o que ela faz visualmente vem do CSS.

div class e id

Uma div normalmente recebe uma class, que é o nome que o seu CSS mira. Divs que compartilham uma classe compartilham o estilo:

.card estiliza as duas caixas, .card.highlight adiciona um contorno azul à div que tem as duas classes. Use id quando precisar apontar para uma div específica, por exemplo como destino de um link (href="#pro"). A página de atributos compara class e id em detalhe.

Divs lado a lado

Como divs são blocks, elas se empilham na vertical. Para colocá-las em linha, transforme o pai delas num contêiner flex:

display: flex em .row alinha os filhos, gap os espaça e os valores de flex dividem a largura (1 : 2 : 1 aqui). Esse padrão de pai e filhos é o uso mais comum de divs em sites reais. Para centralizar uma div, veja como centralizar uma div.

Divs aninhadas

Divs podem conter outras divs em qualquer profundidade. Cada nível é uma caixa dentro de outra caixa, o que você vê dando a cada div uma borda e um pouco de padding:

Mantenha o aninhamento tão raso quanto o layout permitir. Cada wrapper a mais é mais uma caixa para entender quando uma margem ou largura não faz o que você espera.

div ou uma tag semântica?

Uma div não diz nada sobre o seu conteúdo. O HTML tem tags que fazem o mesmo trabalho de agrupar e também dizem o que é o grupo:

Em vez deUsePara
<div class="header"><header>Introdução ou barra superior de uma página ou seção
<div class="nav"><nav>Um bloco de links de navegação
<div class="main"><main>O conteúdo principal, uma vez por página
<div class="post"><article>Um item independente: post, comentário, card de produto
<div class="footer"><footer>Rodapé de uma página ou seção

Essas tags têm exatamente a aparência de uma div até você estilizá-las, mas os leitores de tela as anunciam e permitem que o usuário pule entre elas, e os buscadores leem a estrutura. Use uma div para caixas que existem só para layout ou estilo, como o wrapper .row acima. A página de HTML semântico cobre o conjunto completo.

Uma div não é um botão

Uma div com um manipulador de clique parece clicável para quem usa mouse, mas quem usa teclado não chega nela com Tab nem a aciona com Enter, e o leitor de tela não a anuncia como botão:

Use <button> para ações e <a href> para navegação. Os dois recebem foco e funcionam com o teclado sem esforço extra.

Erros comuns

  • Uma div dentro de um <p>. O parágrafo fecha antes da div. Faça da div o elemento externo, ou use <span> dentro do parágrafo.
  • Sopa de divs. Uma página feita só de divs não tem estrutura para leitores de tela. Troque divs por <header>, <nav>, <main> e <footer> onde couber.
  • Divs clicáveis. Use um <button> ou um link.
  • Esperar que uma div tenha a largura do texto. Uma div ocupa a largura toda. Use display: inline-block, width: fit-content ou um <span> se quiser que ela encolha.
  • Repetir um id em várias divs. Use uma classe para tudo o que se repete.

Perguntas frequentes

O que é uma div no HTML?

<div> é um contêiner genérico. Ela agrupa outros elementos para que você possa estilizá-los ou posicioná-los juntos, e não tem significado próprio: os navegadores a exibem como um bloco que começa numa linha nova e ocupa toda a largura disponível.

O que significa div class?

<div class="card"> é uma div com um atributo class. A classe é um nome que o CSS usa para estilizá-la (.card { ... }) e que o JavaScript usa para encontrá-la. Várias divs podem compartilhar uma classe, e uma div pode ter várias: class="card featured".

Como colocar duas divs lado a lado?

Envolva as duas numa div pai e dê ao pai display: flex. Os filhos então ficam em linha. Adicione gap para o espaço entre eles e flex: 1 nos filhos para dividir a largura por igual.

Devo usar div ou section?

Use <section>, <header>, <nav>, <main>, <article> ou <footer> quando o conteúdo tem esse papel, porque leitores de tela e buscadores entendem essas tags. Use <div> quando você só precisa de uma caixa para estilo ou layout.

Posso colocar uma div dentro de uma tag p?

Não. Um parágrafo só pode conter conteúdo inline. O navegador fecha o <p> assim que encontra a <div>, o que quebra seus estilos. Use uma div como elemento externo ou um <span> dentro do parágrafo.

Coddy programming languages illustration

Aprenda a programar com o Coddy

COMEÇAR