Skip to main content
Validação HTML

Tag de fim para “body” encontrada, mas existiam elementos não fechados.

Sobre este problema HTML

Quando o browser encontra uma tag </body> enquanto elementos como <div>, <section>, <p>, ou <span> ainda estão abertos, deve adivinhar onde esses elementos deveriam terminar. Diferentes browsers podem adivinhar de forma diferente, levando a renderização inconsistente e uma estrutura DOM que não corresponde à sua intenção. Isto pode causar problemas de layout, styling quebrado, e problemas de acessibilidade — os leitores de ecrã dependem de um DOM bem formado para transmitir a estrutura correta do documento aos utilizadores.

As causas raiz deste erro incluem tipicamente:

  • Esquecer uma tag de fechamento — o cenário mais comum, especialmente com estruturas profundamente aninhadas.
  • Tags não correspondentes — tags de fechamento que não correspondem às suas tags de abertura (por exemplo, abrir um <div> mas fechá-lo com </section>).
  • Erros de copiar-colar — duplicar ou eliminar código que deixa para trás tags de abertura órfãs.
  • Aninhamento incorreto — elementos sobrepostos onde as tags cruzam fronteiras em vez de estarem devidamente aninhadas.

Para corrigir o problema, trabalhe através da lista de erros do validador de cima para baixo. A mensagem de erro geralmente identifica quais elementos não estão fechados. Encontre cada um e adicione a tag de fechamento em falta na posição correta ou remova a tag de abertura desnecessária. Usar indentação consistente torna muito mais fácil identificar incompatibilidades visualmente.

Exemplos

Tag de fechamento em falta

Isto desencadeia o erro porque o elemento <section> nunca é fechado:

<body>
  <section>
    <h1>Welcome</h1>
    <p>Hello, world!</p>
</body>

Adicione a tag de fechamento </section> em falta:

<body>
  <section>
    <h1>Welcome</h1>
    <p>Hello, world!</p>
  </section>
</body>

Múltiplos elementos não fechados

Aqui, tanto o <div> quanto o <ul> ficaram abertos:

<body>
  <div class="sidebar">
    <ul>
      <li>Home</li>
      <li>About</li>
</body>

Feche cada elemento na ordem correta (inversa):

<body>
  <div class="sidebar">
    <ul>
      <li>Home</li>
      <li>About</li>
    </ul>
  </div>
</body>

Tag de fechamento não correspondente

Uma incompatibilidade entre tags de abertura e fechamento também pode produzir este erro. O <div> é aberto mas </section> é usado para o fechar, deixando o <div> não fechado:

<body>
  <div class="content">
    <p>Some text here.</p>
  </section>
</body>

Corrija a tag de fechamento para que corresponda à tag de abertura:

<body>
  <div class="content">
    <p>Some text here.</p>
  </div>
</body>

Elementos sobrepostos (incorretamente aninhados)

Elementos que se sobrepõem em vez de se aninharem adequadamente também vão desencadear este erro. Aqui as tags <b> e <i> cruzam as fronteiras uma da outra:

<body>
  <p><b>Bold and <i>italic</b> text</i></p>
</body>

Assegure-se de que os elementos são fechados na ordem inversa à que foram abertos:

<body>
  <p><b>Bold and <i>italic</i></b><i> text</i></p>
</body>

Encontre problemas como este automaticamente

O Rocket Validator analisa milhares de páginas em segundos, detetando problemas HTML em todo o seu site.

Ajude-nos a melhorar os nossos guias

Este guia foi útil?

Pronto para validar os seus sites?
Comece o seu teste gratuito hoje.