Sobre este problema HTML
O elemento <table> em HTML tem um modelo de conteúdo rígido. Diretamente dentro de <table>, apenas elementos específicos são permitidos: <caption>, <colgroup>, <thead>, <tbody>, <tfoot>, <tr>, e elementos que suportam <script>. Da mesma forma, elementos <tr> podem apenas conter elementos <td> e <th>. Uma tag <br> colocada entre linhas de tabela, ou diretamente dentro de um <tbody> ou <tr> mas fora de uma célula, viola este modelo de conteúdo.
Este erro normalmente acontece quando os programadores tentam adicionar espaçamento vertical entre linhas de tabela usando tags <br>. Os browsers lidam com esta marcação inválida de forma inconsistente — alguns vão empurrar o <br> completamente para fora da tabela, enquanto outros podem ignorá-lo silenciosamente. Isto leva a comportamento de layout imprevisível entre browsers e pode confundir tecnologias assistivas que dependem da estrutura adequada da tabela para transmitir relações de dados aos utilizadores.
O elemento <br> é apenas válido dentro de contextos de conteúdo fraseológico, tal como dentro de um <td>, <th>, <p>, <span>, ou elementos similares. Se precisar de adicionar espaçamento entre linhas, use CSS (margin, padding, ou border-spacing) em vez de inserir tags <br> na estrutura da tabela.
Como corrigir
-
Remova o
<br>se foi adicionado acidentalmente ou como uma tentativa de formatação entre linhas. -
Mova o
<br>para dentro de um<td>ou<th>se pretendia criar uma quebra de linha dentro do conteúdo de uma célula. -
Use CSS para espaçamento se precisar de separação visual entre linhas. Aplique
paddingàs células ou use a propriedadeborder-spacingna tabela.
Exemplos
❌ Inválido: <br> entre linhas de tabela
<table>
<tr>
<th>Item</th>
<th>Description</th>
</tr>
<br>
<tr>
<td>Book</td>
<td>A guide to HTML</td>
</tr>
</table>
❌ Inválido: <br> diretamente dentro de um <tr>
<table>
<tr>
<br>
<td>Book</td>
<td>A guide to HTML</td>
</tr>
</table>
✅ Corrigido: <br> removido, CSS usado para espaçamento
<table style="border-spacing: 0 1em;">
<tr>
<th>Item</th>
<th>Description</th>
</tr>
<tr>
<td>Book</td>
<td>A guide to HTML</td>
</tr>
</table>
✅ Válido: <br> usado dentro de uma célula de tabela
Um elemento <br> é perfeitamente válido dentro de um <td> ou <th>, onde funciona como uma quebra de linha dentro do conteúdo da célula.
<table>
<tr>
<th>Item</th>
<th>Description</th>
</tr>
<tr>
<td>Book</td>
<td>
Title: HTML & CSS<br>
Author: Jon Duckett
</td>
</tr>
</table>
✅ Corrigido: usando padding para espaçamento de linhas
Se o seu objetivo é criar separação visual entre linhas, padding CSS nas células é a abordagem mais limpa:
<style>
.spaced-table td,
.spaced-table th {
padding: 1em 0.5em;
}
</style>
<table class="spaced-table">
<tr>
<th>Item</th>
<th>Description</th>
</tr>
<tr>
<td>Book</td>
<td>A guide to HTML</td>
</tr>
</table>
Encontre problemas como este automaticamente
O Rocket Validator analisa milhares de páginas em segundos, detetando problemas HTML em todo o seu site.