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 de | Use | Para |
|---|---|---|
<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-contentou 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.