Como Usar as Tags caption, thead, tbody e tfoot em Tabelas HTML (Guia Avançado)

Se você acompanhou nossos tutoriais anteriores, você já sabe exatamente o que é uma tabela em HTML e aprendeu passo a passo como criar tabelas com linhas e colunas básicas. Mas vamos mandar a real aqui: tabelas cruas, apenas com linhas jogadas, servem para o básico do básico.

Para criar páginas web modernas, que rankeiam no topo dos buscadores e oferecem uma experiência impecável para o usuário (fator crucial para o robô do Google e para manter a galera clicando nos blocos de anúncios!), nós precisamos ir além. Neste tutorial da nossa Apostila de HTML completa, você vai aprender como turbinar e dar superpoderes estruturais para as suas tables usando quatro tags semânticas obrigatórias: <caption>, <thead>, <tbody> e <tfoot>. Pegue seu café e vamos codar!

⚠️ Antes vs. Depois (A Regra de Ouro do Layout): No início dos anos 2000, os desenvolvedores usavam tabelas (<table>) de forma abusiva para estruturar todo o layout visual de um site (menus, sidebars, cabeçalhos). Isso gerava códigos monstruosos e pesados para a renderização do navegador no viewport. Hoje em dia, fazer isso é um crime grave de desenvolvimento! Layouts visuais estruturais são criados exclusivamente com <div> combinadas com Flexbox ou CSS Grid. As tabelas devem ser reservadas unicamente para dados tabulares estruturados.

Como Usar a Tag <caption> Para Adicionar Títulos em Tabelas HTML

A tag <caption> é um elemento HTML utilizado para definir o título ou o resumo descritivo de uma tabela. Ela deve ser posicionada imediatamente após a abertura da tag <table>, sendo exibida e centralizada por padrão na parte superior dos dados tabulares para otimizar a acessibilidade e o SEO.

Uma das várias possibilidades incríveis que o HTML nos fornece ao trabalhar com dados tabulares é a capacidade de gerar um título integrado. Esse elemento funciona como um resumo instantâneo para o seu usuário (e para o crawler do Google) entender de cara o que aquela sopa de dados significa, sem precisar quebrar a cabeça analisando coluna por coluna.

Esse título fica acoplado diretamente à estrutura do elemento principal, aparecendo centralizado na parte superior da tabela. Para usar a tag, a regra é clara: o texto descritivo deve ficar exatamente aninhado entre a abertura e o fechamento da tag:

<caption>O título de sua tabela aqui</caption>

Por exemplo, imagine uma tabela estruturada em formato 4x2 (4 linhas e 2 colunas), feita exclusivamente para fins de comparação didática. Vamos listar as linguagens mais famosas voltadas para o desenvolvimento Web e ambiente Desktop.

Veja como fica a marcação desse código fonte limpo:

<table border="1">
   <caption>Linguagens</caption>
   <tr>
      <td>Web</td> 
      <td>Desktop</td> 
   </tr>
   <tr>
      <td>HTML</td> 
      <td>C</td> 
   </tr>
   <tr>
      <td>JavaScript</td> 
      <td>C++</td> 
   </tr>
   <tr>
      <td>PHP</td> 
      <td>Java</td> 
   </tr>
</table>
👀 Resultado Visual da Tabela BÁSICA com Caption:
Linguagens
Web Desktop
HTML C
JavaScript C++
PHP Java

Repare bem na arquitetura do código acima: as tags <caption> estão perfeitamente aninhadas dentro da tag pai <table>, que por sua vez fica contida dentro do corpo principal do documento (<body>). Além de deixar o visual limpo, os motores de busca utilizam os captions para catalogar e identificar a tabela (Ex: Tabela 1, Informações de Venda, Unidade versus Preço, etc.).

Apostila HTML e CSS Progressivo

🚀 Quer Aprender Front-End de Verdade Sem Distrações?

Se você quer um material didático passo a passo, estruturado de forma profissional e ideal para consulta rápida offline para acelerar seus estudos, baixe agora o nosso e-book completo.

Estruturação Semântica Avançada: Dividindo a Tabela em Cabeçalho, Corpo e Rodapé

Como dissemos no artigo inicial deste módulo do nosso curso de HTML, as tabelas servem para organizar massas de informações complexas. Para que os navegadores web e os leitores de tela processem esses dados com perfeição, o HTML nos permite dividir a anatomia da tabela em três seções lógicas distintas:

  • O Cabeçalho: Onde definimos os títulos macros das colunas.
  • O Corpo: Onde ficam os dados e registros reais.
  • O Rodapé: Onde inserimos somatórios, créditos ou metadados de encerramento.

1. <thead> - O Cabeçalho de uma Tabela

Para criar a seção de cabeçalho, usamos o par de tags <thead> e </thead>. Ela deve ser posicionada logo abaixo da tag <caption>. Ao fazer isso, o HTML entende que tudo o que está ali dentro serve para fornecer informações e rótulos contextuais sobre as colunas que virão abaixo.

No nosso exemplo atualizado, vamos dar o título descritivo de "Tabela 1.1" através do caption, e usaremos o <thead> para carregar o rótulo principal "Tipos de linguagem". Veja o fragmento de código:

<thead>
   <tr>
      <td>Tipos de linguagem</td>
   </tr>
</thead>

2. <tbody> - O Corpo de uma Tabela

Após definir o título e o topo estrutural, entramos no coração dos dados: o corpo da tabela. O corpo (ou body) nada mais é do que o conjunto de informações brutas que preenchem as linhas.

No nosso caso prático, o corpo compreende todas as linhas que exibem os nomes das linguagens de programação (HTML, C, JavaScript, C++, PHP, Java). Para englobar semanticamente esse trecho, inserimos tudo entre as tags: <tbody> e </tbody>.

3. <tfoot> - O Rodapé de uma Tabela

Por fim, mas não menos importante, temos o rodapé. Assim como o rodapé de um site tradicional, ele fica localizado na base do elemento e geralmente contém informações adicionais sobre os dados exibidos, autoria, somas matemáticas totais ou o clássico selo do desenvolvedor/webmaster.

Para gerar essa área, basta escrever a marcação dentro das tags: <tfoot> e </tfoot>. Em nosso exercício, vamos assinar a tabela adicionando o texto "by HTML Progressivo" em sua base.

🛠️ Segredo de Ordem Estrutural (HTML4 vs HTML5): Nas antigas especificações do HTML4, os navegadores exigiam de forma bizarra que o <tfoot> fosse declarado antes do <tbody>! Isso ocorria para que o browser renderizasse o rodapé na tela antes de processar tabelas gigantescas que demoravam minutos para baixar. No HTML5 moderno, essa limitação foi superada. O navegador é inteligente o suficiente para saber a posição correta de cada elemento na tela, permitindo que você escreva o código na ordem lógica natural: theadtbodytfoot.

O Código HTML Semântico Completo e Otimizado

Vamos juntar todos os blocos aprendidos nesta aula para criar uma tabela robusta, limpa, totalmente válida pelos padrões da W3C. Observe que incluímos o atributo colspan="2" no cabeçalho e rodapé para garantir que essas linhas estiquem ocupando o espaço das duas colunas da tabela de forma harmoniosa:

<table border="1">
   <caption>Tabela 1.1</caption>
   
   <thead>
      <tr>
         <th colspan="2">Tipos de linguagem</th>
      </tr>
   </thead>
   
   <tbody>
      <tr>
         <td>Web</td> 
         <td>Desktop</td>
      </tr>
      <tr>
         <td>HTML</td> 
         <td>C</td> 
      </tr>
      <tr>
         <td>JavaScript</td> 
         <td>C++</td> 
      </tr>
      <tr>
         <td>PHP</td> 
         <td>Java</td> 
      </tr>
   </tbody>

   <tfoot>
      <tr>
         <td colspan="2">by HTML Progressivo</td>
      </tr>
   </tfoot>
</table>
👀 Resultado Real no Navegador:
Tabela 1.1
Tipos de linguagem
Web Desktop
HTML C
JavaScript C++
PHP Java
by HTML Progressivo

Viu como a tabela ficou muito mais imponente e organizada? No próximo artigo da nossa apostila, vamos elevar o nível aprendendo a fazer mesclagens avançadas e personalizações visuais fantásticas com atributos adicionais. Fique ligado!


Perguntas Frequentes sobre Tabelas HTML (FAQ)

Para que serve a tag caption em tabelas do HTML?

A tag <caption> funciona como o título ou legenda oficial de uma tabela. Ela é de extrema importância para leitores de tela usados por pessoas com deficiência visual e ajuda diretamente o algoritmo do Google a compreender o contexto temático da sua tabela para melhorar o indexamento orgânico nas buscas.

As tags thead, tbody e tfoot alteram o visual da tabela?

Por padrão de fábrica dos navegadores, o impacto visual puro direto é mínimo. O objetivo primário delas é puramente semântico e de acessibilidade. No entanto, elas servem como ganchos (targets) ideais para você aplicar CSS avançado, permitindo criar fundos diferentes para o cabeçalho, efeito zebrado apenas nas linhas de dados do corpo, e estilização única no rodapé.

Posso inverter a ordem de declaração dessas tags estruturais?

Embora navegadores modernos baseados em HTML5 consigam identificar os blocos e reposicioná-los visualmente de forma correta mesmo se você errar a ordem no código fonte, a boa prática de desenvolvimento profissional dita que você deve manter a ordem natural lógica: <thead> no topo, seguido pelo <tbody> e finalizando com o <tfoot>.

O que estudar a seguir:

  • Como Mesclar Colunas com o Atributo Colspan no HTML
  • Como Mesclar Linhas com o Atributo Rowspan no HTML
  • Estilização de Tabelas: Como Criar Efeito Zebrado Moderno com CSS

Como Criar Tabelas em HTML: Guia Absoluto com as Tags Table, TR e TD (E o Jeito Certo de Usar)

Agora que já sabemos o que são tabelas e suas utilidades em HTML, vamos, de fato, colocar a mão na massa e começar a criar nossos códigos estruturados. Para criar relatórios, tabelas de preços ou cronogramas eficientes, faremos uso de 3 tags fundamentais e indissociáveis: <table>, <tr> e <td>. Vamos entender a fundo como cada uma funciona na nossa apostila de HTML completa.

Como estruturar dados com tabelas em HTML de forma correta?

Para criar uma tabela em HTML, utilizamos a tag contêiner principal <table>, as linhas através da tag <tr> (table row) e as células de conteúdo com a tag <td> (table data). Atualmente, tabelas devem ser aplicadas apenas para dados tabulares, delegando o layout ao CSS Flexbox ou Grid.

A única tag de uso estritamente obrigatório para inicializar esse bloco é a própria <table> </table>. Dentro dela, a mágica acontece. É possível até mesmo realizar o aninhamento de tags, colocando uma tabela menor guardada dentro da célula de outra maior — embora hoje em dia a gente faça isso com muito mais elegância usando CSS moderno.

🛠️ Curiosidade do Front-End: Antigamente, nos anos 2000, os desenvolvedores usavam tabelas para criar o layout inteiro de um site (topo, colunas laterais, rodapé). Isso era um pesadelo para o SEO, quebrava a acessibilidade para leitores de tela e deixava o código pesado. Hoje, o Google penaliza severamente quem usa tabelas para design de layout. Use-as apenas para dados numéricos, estatísticas ou comparativos!

Entendendo o escopo da tag principal

É no bloco delimitado por <table> que organizamos a semântica de linhas (tr) e colunas (td). No passado, essa tag carregava uma infinidade de atributos direto no HTML para controlar o visual, tais como:

  • Definir se a tabela possui bordas visíveis.
  • Controlar a espessura exata da borda.
  • Aplicar cores de fundo customizadas.
  • Ajustar o espaçamento interno (cellpadding) e externo (cellspacing) das células.

Hoje, as diretrizes oficiais da MDN Web Docs exigem que todo esse controle estético seja feito via folha de estilo (CSS). No entanto, para fins didáticos e para entender como a árvore do DOM renderiza esses elementos, vamos analisar o comportamento nativo.

<!-- Exemplo da estrutura básica padrão -->
<table>
   <!-- As linhas e células entram aqui -->
</table>

O Atributo Border: O jeito antigo vs. O jeito moderno (CSS)

Para enxergarmos a separação das linhas e colunas de forma clara, precisamos das bordas. No HTML clássico, usava-se o atributo border inserido diretamente na tag. Veja a sintaxe antiga:

<!-- Código legado: Evite usar o atributo border direto na tag -->
<table border="1">
    <tr>
        <td>Borda Fina Legada</td>
    </tr>
</table>

A evolução moderna: Em vez de poluir seu arquivo HTML com atributos visuais obsoletos, nós aplicamos regras CSS limpas e escaláveis. Veja como obter o mesmo efeito — infinitamente mais bonito e responsivo — usando CSS:

/* O jeito certo de aplicar bordas modernas em CSS */
table {
    border-collapse: collapse; /* Une as bordas duplas em uma só */
    width: 100%;
    margin: 20px 0;
}
th, td {
    border: 1px solid #cbd5e1; /* Borda elegante cor slate */
    padding: 12px;
    text-align: left;
}

Simulação Visual da Tabela Estilizada Modernamente:

Tecnologia Função Principal
HTML5 Estruturação Semântica dos Dados
CSS3 Estilização e Layout Responsivo
Banner Oficial do Curso HTML Progressivo

🚀 Quer Dominar o Front-End Sem Depender de Conexão?

Estudar com anúncios pipocando no meio da leitura atrapalha o raciocínio. Pensando nisso, compilamos todo o nosso conhecimento no ecossistema de desenvolvimento dentro da nossa Apostila Digital de HTML & CSS Progressivo. Um guia blindado, organizado passo a passo para você estudar offline no computador, celular ou tablet.

"Estava totalmente travado tentando entender a lógica das tabelas e do posicionamento CSS. Esse material salvou os projetos da faculdade!" — Carlos, Desenvolvedor Júnior.

<tr> - Como criar as linhas da tabela

Com a tag base mapeada, precisamos definir as divisões internas. O primeiro elemento de subdivisão estrutural que criamos são as linhas. Lembre-se sempre da regra básica da orientação espacial do navegador: linhas são dispostas na horizontal (deitadas), enquanto colunas se posicionam na vertical (em pé).

Se você já trabalhou com planilhas no Microsoft Excel ou estudou matrizes na matemática escolar, vai pegar o conceito num estalar de dedos. Na linguagem do desenvolvimento web, cada intersecção de uma linha com uma coluna forma um pequeno bloco independente que chamamos de célula.

Para ilustrar perfeitamente essa mecânica, veja a imagem explicativa abaixo que mapeia uma estrutura contendo 4 linhas e 4 colunas distintas, gerando um total de 16 células individuais para entrada de conteúdo:

Diagrama explicativo ilustrando linhas e colunas de uma tabela estruturada em HTML

Na tag <tr>, o caractere "t" refere-se a table e o "r" refere-se a row (fileira ou linha, em bom português). Portanto, cada ocorrência do par de abertura e fechamento <tr> </tr> diz ao motor de renderização do navegador para saltar e abrir uma nova fileira horizontal na tela.

<!-- Criando uma tabela simples com exatamente duas linhas -->
<table style="border: 1px solid black;">
    <tr>
        <td>Conteúdo da Linha 1</td>
    </tr>
    <tr>
        <td>Conteúdo da Linha 2</td>
    </tr>
</table>
⚠️ Atenção de Sintaxe: Nunca jogue texto puro diretamente dentro da tag <tr>. O conteúdo textual obrigatoriamente deve morar dentro das células de dados (<td>), que veremos em detalhes agora. Pular essa regra quebra a árvore semântica do seu documento HTML!

<td> - Inserindo os dados e colunas

Como sua intuição de programador já deve ter previsto, a tag <td> cumpre a função de gerar as subdivisões verticais (as colunas). A sigla significa table data (dados da tabela).

No ecossistema do HTML, existe uma hierarquia rígida: as linhas mandam nas colunas. Isso significa que você não cria uma coluna isolada flutuando no código; você cria colunas dentro de uma linha específica. Se você colocar três blocos <td></td> enfileirados dentro de um escopo <tr>, terá criado uma linha subdividida em três colunas.

<!-- Tabela estruturada em formato de matriz 2x3 (2 Linhas e 3 Colunas) -->
<table>
    <!-- Inicializa a Primeira Linha -->
    <tr>
        <td>L1, Coluna 1</td>
        <td>L1, Coluna 2</td>
        <td>L1, Coluna 3</td>
    </tr>
    <!-- Inicializa a Segunda Linha -->
    <tr>
        <td>L2, Coluna 1</td>
        <td>L2, Coluna 2</td>
        <td>L2, Coluna 3</td>
    </tr>
</table>

Como gerenciar células em branco na tabela?

Na vida real desenvolvendo projetos de tecnologia, nem todas as células do seu relatório carregarão dados imediatamente. Às vezes o valor é nulo, está pendente de uma consulta ao banco de dados no Curso PHP Progressivo, ou aguarda a interação do usuário via JavaScript.

Para simular e renderizar uma célula vazia sem quebrar o layout simétrico da tabela, você nunca deve simplesmente pular ou deletar a tag daquela posição. Mantenha o par de tags <td></td> aberto e fechado normalmente, deixando o miolo vazio.

<!-- Exemplo Prático: Omitindo o dado da coluna central (Coluna 2) na Linha 2 -->
<table>
    <tr>
        <td>Item A1</td>
        <td>Item A2</td>
        <td>Item A3</td>
    </tr>
    <tr>
        <td>Item B1</td>
        <td></td> <!-- Célula em branco mantida para preservar o grid -->
        <td>Item B3</td>
    </tr>
</table>
💡 Dica de Ouro de Acessibilidade: Células totalmente invisíveis ou sem conteúdo podem confundir leitores de tela usados por pessoas com deficiência visual. Uma boa prática de mercado é colocar um hífen (-), a palavra N/A (Não Aplicável) ou usar atributos ARIA apropriados para explicitar que o dado está vazio intencionalmente.

Dominando essas três ferramentas simples, você ganha o superpoder de estruturar grades de dados robustas para qualquer sistema front-end moderno. Pratique clonando tabelas complexas do seu dia a dia e convertendo tudo para esse modelo semântico limpo.


Perguntas Frequentes sobre Tabelas HTML (FAQ)

1. Qual é a real diferença entre as tags TR e TD no HTML?

A tag <tr> define uma linha horizontal completa na tabela, funcionando como um contêiner organizador. Já a tag <td> define cada célula de dado individual (as colunas) que ficam alojadas dentro daquela linha específica.

2. Ainda vale a pena usar tabelas para montar o layout de um site?

Não! Utilizar tabelas para criar layouts estruturais de sites é uma prática obsoleta e condenada pelas regras modernas de SEO e usabilidade. Para criar designs, interfaces e grids responsivos, utilize ferramentas nativas do CSS como Flexbox ou CSS Grid.

3. Como deixar as tabelas HTML totalmente responsivas no celular?

A forma mais comum e limpa é envelopar toda a tag <table> dentro de uma <div> configurada no CSS com a propriedade overflow-x: auto;. Isso faz com que a tabela ganhe uma barra de rolagem horizontal suave em telas menores, sem quebrar o layout do resto do portal.

🚀 O que estudar a seguir na sua jornada:

  • Como usar a tag TH para criar cabeçalhos destacados em tabelas.
  • Entendendo as propriedades Colspan e Rowspan para mesclar células complexas.
  • Tags semânticas avançadas de tabelas: Thead, Tbody e Tfoot.

Tabelas em HTML: O que são, Exemplos e Boas Práticas

Fala, dev! Chegou aquele momento do nosso curso HTML Progressivo em que separamos os amadores dos profissionais. Hoje vamos falar sobre um dos assuntos mais clássicos e polêmicos da criação de sites: as famosas Tabelas.

Sabemos que essa "sopa de letrinhas" do HTML assusta no começo, mas dominar as tabelas é ter um recurso poderoso para organizar conteúdos complexos e exibir informações no DOM de maneira que tanto o usuário quanto o Google amem.



O que é uma Tabela em HTML e Para Que Serve?

O que são tabelas em HTML? No HTML moderno, a tag <table> serve exclusivamente para organizar dados tabulares estruturados em linhas e colunas (como planilhas, relatórios ou placares). Usar tabelas para criar o layout visual do site é uma prática obsoleta que destrói o SEO, a acessibilidade e a responsividade.


Mas calma lá. Qual a primeira coisa que vem à sua mente quando falamos em tabela? Provavelmente um monte de quadradinhos, um ao lado do outro, acima e abaixo. Como o Excel, por exemplo, ou a tabela periódica das aulas de química.

E você está absolutamente certo! De uma maneira geral, tabelas são estruturas lógicas para organizar e cruzar dados. Elas facilitam imensamente a vida de quem precisa ler listas volumosas.



Aplicações Práticas: As Tabelas no Mundo Real (e na Web)

Para sairmos da abstração e entendermos o peso desse elemento no seu viewport (a área visível da tela do usuário), vamos analisar exemplos reais. Se no mundo físico elas são vitais, nos sistemas web que você vai desenvolver, elas são indispensáveis.

1. Tabelas-Verdade para Cálculos Lógicos

Quem já estudou eletrônica, ciência da computação ou engenharia já lidou com as tabelas-verdade. Elas organizam bits (1 e 0) para calcular saídas de sistemas complexos. Abaixo, um exemplo clássico para acender um display de 7 segmentos:

Exemplo de Tabela Verdade usada para cálculos em engenharia

2. Gráficos e Comparativos Financeiros

Sistemas ERPs, painéis administrativos e aplicativos de bancos vivem de cruzar dados (eixo X e Y) para desenhar gráficos de evolução ou perdas. Quando você dominar as linguagens back-end (como o nosso Curso de PHP Progressivo), você vai puxar dados do banco e "cuspir" tudo na tela usando HTML Tables.

Exemplo de Tabela para Gráficos Financeiros

3. Histogramas e Planilhas Estilo Excel

O ecossistema inteiro do Microsoft Office Excel é fundamentado em células de tabelas! Fazer cálculos de média, soma e filtragem num consultório odontológico ou em uma escola exige sistemas tabulares. Seu site precisará disso para relatórios!

Interface de software simulando Tabela estilo Histograma do Excel


Slogan Curso HTML Progressivo

Pare de Copiar e Colar. Comece a ENTENDER o Código! 🚀

Se você trava na hora de construir layouts responsivos ou sente que tutoriais soltos não te levam a lugar nenhum, você precisa de um mapa definitivo. Com a Apostila Completa HTML & CSS Progressivo, você vai do zero à primeira vaga de Front-End, estudando offline, sem anúncios chatos te atrapalhando.

Capa da Apostila Digital HTML e CSS Progressivo em PDF
"Eu tentava aprender Flexbox e Grid no Youtube e me perdia na sopa de divs. A didática dessa apostila é absurda de boa. Consegui meu primeiro freela em um mês!"
— Marcos V., Desenvolvedor Front-End
🔥 QUERO GARANTIR MINHA CÓPIA DIGITAL
Gosta de cheiro de papel novo? Clique aqui para receber o Livro Físico em casa!


A Grande Treta: Tabelas para Layout (Não faça isso em 2026!)

Preste muita atenção nesta dica de ouro do dev sênior aqui. A internet mudou.

Se você pesquisar no Google por tutoriais de HTML muito antigos (da época do HTML 4.01), verá portais gigantes, como Terra ou Globo.com, usando tabelas gigantescas para criar o layout das páginas. Eles colocavam o logo na primeira célula (<td>), o menu na coluna da esquerda e a notícia no meio.

⚠️ Alerta Vermelho: Fazer layout de site com tabelas hoje é suicídio de projeto. Robôs de busca (Googlebot) leem seu código procurando semântica. Se ele vê uma tabela englobando seu menu de navegação, ele não entende nada. Seu ranqueamento cai vertiginosamente. Além disso, tabelas quebram totalmente em celulares (péssima responsividade) e confundem leitores de tela usados por pessoas cegas.

A Solução Moderna: Flexbox e Grid

Quer alinhar imagens, textos ou fazer 3 colunas de notícias bonitonas? Nós usamos CSS moderno (Flexbox e CSS Grid Layout). Deixamos a marcação em HTML pura e semântica (usando <div>, <section>, <article>).

Deixe as tabelas EXCLUSIVAMENTE para a sua real função: expor dados e listas cruzadas!



Exemplo Prático: Sua Primeira Tabela Semântica

Sente só o gosto de como criamos uma tabela moderna no HTML5 para exibir o boletim de um aluno. Note que a aparência (linhas e bordas) a gente faz no CSS, não no HTML!

<!-- Estrutura semântica de Tabela de Dados (HTML5) -->
<table style="width: 100%; border-collapse: collapse; text-align: center; border: 1px solid #ccc;">
    <!-- Cabeçalho da Tabela -->
    <tr style="background-color: #f8fafc;">
        <th style="padding: 10px; border: 1px solid #ccc;">Matéria</th>
        <th style="padding: 10px; border: 1px solid #ccc;">Nota 1</th>
        <th style="padding: 10px; border: 1px solid #ccc;">Status</th>
    </tr>
    
    <!-- Linha de Dados -->
    <tr>
        <td style="padding: 10px; border: 1px solid #ccc;">HTML5</td>
        <td style="padding: 10px; border: 1px solid #ccc;">10.0</td>
        <td style="padding: 10px; border: 1px solid #ccc; color: green;">Aprovado</td>
    </tr>
</table>
💡 Dica Renderizada: Veja como o navegador do seu usuário enxerga esse código logo abaixo!
Matéria Nota 1 Status
HTML5 10.0 Aprovado
CSS3 9.5 Aprovado


Perguntas Frequentes (FAQ)

Por que não devo usar tabelas para fazer o layout do site?

As tags de tabela (<table>) no HTML5 foram concebidas apenas para dados tabulares. Usá-las como sistema de grid visual cria um código não-semântico, penalizando gravemente o SEO no Google, atrapalhando leitores de tela para deficientes visuais e impossibilitando a responsividade nativa para dispositivos móveis.

O que substitui as tabelas no alinhamento de layout HTML moderno?

A solução moderna e atual para estruturar layouts complexos e alinhar elementos é utilizar contêineres lógicos (como <div>, <main>, <aside>) integrados a módulos de CSS, especificamente o Flexbox (para layouts unidimensionais) e o CSS Grid Layout (para layouts bidimensionais).

Ainda faz sentido aprender tabelas HTML hoje?

Sim, 100%! Qualquer painel financeiro, tabela de preços de planos de assinatura, lista de campeonatos esportivos ou relatórios analíticos extraídos de bancos de dados usam as tags de tabela reais (table, tr, td, th). Elas continuam sendo a única forma semanticamente correta de mostrar dados correlacionados na web.


🚀 O que estudar a seguir:

Agora que você entendeu o conceito e quando usar (ou não) uma tabela, é hora de sujar as mãos de código e ver os elementos reais atuando na DOM. Avance nestes tutoriais no nosso curso:

  • A Anatomia de uma Tabela: Dominando as Tags <table>, <tr> e <td>.
  • Bordas e Alinhamentos: Estilizando Tabelas com CSS sem Gambiarras.
  • Tabelas Acessíveis: O uso correto das tags <thead>, <tbody> e <tfoot>.

SEO para Imagens no HTML: Guia de alt, title e Direitos

Fala, mestre do código! Preparado para o próximo nível?

 SEO para Imagens: 
O Guia Definitivo de alt, title, Direitos Autorais e a Morte do HTML4

Até agora em nossa jornada pelo curso de HTML, nós já vimos como usar a tag <img> para exibir imagens, como manipular a altura e largura das figuras, e até demos uma pincelada sobre o alinhamento de elementos na tela.

Porém, colocar uma imagem na tela é fácil. Qualquer júnior faz. Fazer o Google entender essa imagem, ranquear seu site no topo das buscas (no Google Imagens) e garantir que você não tome um processo judicial por direitos autorais... aí é trabalho para um Desenvolvedor Sênior. Hoje, vamos fechar o módulo de imagens com chave de ouro, falando sobre SEO (Search Engine Optimization), acessibilidade e boas práticas do mercado moderno.


O Segredo do Tráfego: Nome do Arquivo, title e alt

O que é SEO para imagens no HTML? É a prática de otimizar mídias para os motores de busca e leitores de tela usando o atributo alt (texto alternativo), title (título descritivo) e nomes de arquivo semânticos com palavras-chave, garantindo acessibilidade e ranqueamento no Google.

Muitos iniciantes se perguntam:

  • "Se eu não colocar um nome otimizado, deixar como IMG_0023.jpg, a imagem aparece?" Sim.
  • "Se eu não colocar o atributo title, a imagem carrega?" Sim.
  • "E se eu ignorar o atributo alt?" A imagem será exibida do mesmo jeito.

Então, por que perder tempo descrevendo imagens com texto? A resposta vale ouro: Robôs não têm olhos (pelo menos, não como os nossos). O algoritmo do Google lê o Document Object Model (DOM) do seu site. Ele usa os textos que você escreve dentro da tag <img> como critério absoluto de ranqueamento.

Além disso, o atributo alt é obrigatório para a Acessibilidade (WCAG). Pessoas com deficiência visual usam leitores de tela que leem em voz alta o que está escrito no alt. Se você deixa vazio, você exclui usuários do seu site e o Google te penaliza com o Helpful Content Update.

🛠️ Curiosidade de SEO: As palavras-chave do seu projeto devem estar distribuídas de forma inteligente no título, na meta tag description, no texto e dentro das imagens. O Google Imagens é o segundo maior motor de buscas do mundo, perdendo apenas para o próprio Google principal!

Cansado de Tutoriais Soltos e Código Quebrado? 🛑

Pare de "bater cabeça" com HTML e CSS. Tenha o mapa completo da Carreira Front-End em suas mãos. Aprenda acessibilidade, SEO técnico e layouts responsivos de forma definitiva com a Apostila HTML & CSS Progressivo. Estude offline, sem distrações.

Capa da Apostila Digital HTML e CSS Progressivo
"Eu negligenciava o SEO básico e meus sites nunca recebiam visitas. Essa apostila me ensinou a pensar como o Google e como um dev profissional. Recomendo de olhos fechados!"
— Thiago M., Desenvolvedor Front-End
🚀 QUERO DOMINAR O FRONT-END AGORA
Prefere o cheiro de papel? Compre o Livro Físico e receba em casa!

Entendendo o Contexto: A Analogia das Velas

Imagine que você vai escrever um artigo sobre "Velas". Você usa a palavra na title tag ("Conheça as mais belas velas de navios") e na meta description. Mas e na hora de colocar a imagem?

Você renomeia o arquivo para algo focado, como vela-de-um-barco-no-brasil.jpg. No HTML moderno, você usa a tag semântica <figure> para englobar a imagem, e capricha nos atributos:

<!-- O jeito profissional e otimizado para o Google em 2026 -->
<figure>
    <img src="vela-de-caravela.jpg" 
         alt="Grande vela de tecido branco estendida em uma caravela antiga no mar" 
         title="Vela principal da caravela portuguesa" 
         width="200" height="150">
    <figcaption>Exemplo de uma vela de embarcação histórica.</figcaption>
</figure>

Por que toda essa riqueza de detalhes? Porque o termo "vela" é ambíguo. Alguém buscando por "velas" no Google Imagens pode querer ver duas coisas completamente diferentes:

Vela de uma caravela em alto mar

Velas de Navegação

 Velas de cera acesas para iluminação e religião

Velas de Iluminação

Como o Google sabe quem é quem? Pelo Silo de Conteúdo. Ele cruza o texto do artigo, os atributos title e alt, e decide a intenção de busca. Faça sua parte no código, e os motores de busca farão a mágica no tráfego!


Direitos Autorais: Onde Conseguir Imagens Sem Ser Processado?

"Vou ali no Google Imagens, pego qualquer foto e jogo no meu site, ué!". Se você pensa assim, cuidado. Isso é um erro amador que pode acabar em multas pesadas.

Assim como escrever um livro ou compor uma música, a fotografia tem dono. Salvar uma imagem protegida e colocar no seu servidor sem permissão é violação de Direito Autoral (Copyright). O Google pode até banir seu site da internet (DMCA Takedown).

⚠️ Atenção (Licenças): Onde encontrar boas fotos então? Busque bancos de imagens gratuitos sob licença Creative Commons ou domínio público. O projeto HTML Progressivo usa e recomenda fontes seguras como o Wikimedia Commons, além de plataformas modernas como Unsplash e Pexels. Respeite o trabalho dos fotógrafos e designers!

A Mina de Ouro: Antes (HTML4) vs. Depois (HTML5 e CSS)

Se você pesquisar tutoriais antigos (lá de 2013), vai encontrar um mundo completamente diferente. Naquela época, nós usávamos marcações hoje consideradas mortas (deprecated), como `` ou criávamos layouts usando tabelas <table> e atributos como cellpadding.

O grande problema dessas técnicas do passado é que elas misturavam Estrutura (HTML) com Design (CSS). Isso deixava o site pesado, péssimo para SEO e completamente quebrado quando acessado por celulares.

Hoje, a regra de ouro do Front-End moderno é:

  1. HTML5: Cuida apenas da semântica. Diz o que é um título (<h1>), o que é um parágrafo (<p>) e o que é uma imagem (<img>).
  2. CSS3: Cuida da aparência. Quer a imagem alinhada à esquerda? Use display: flex ou float no CSS. Quer arredondar bordas? Use border-radius.

O estudo da história do HTML é essencial para você entender o "porquê" as coisas funcionam hoje. Mas daqui para frente no curso, focaremos em te transformar em um monstro do CSS moderno!

💡 Dica Progressiva: Quer todos os meus cursos completos, exercícios resolvidos e apostilas em um só lugar? Conheça o nosso Mega Pack Progressivo e leve todo o arsenal de programação web para estudar no seu ritmo!


Perguntas Frequentes (FAQ)

Qual a diferença entre o atributo alt e o title na tag img?

O alt (texto alternativo) descreve literalmente o que está na imagem. Se a foto quebrar, é ele que aparece, além de ser lido por leitores de tela para cegos. Já o title é o "título" secundário que geralmente aparece como um balão flutuante (tooltip) quando o usuário passa o mouse por cima da figura.

Ainda devo usar o atributo align no HTML?

Não. O atributo align="left|right|center" direto na tag HTML está obsoleto (deprecated) no HTML5. O padrão de mercado hoje é usar a propriedade display: flex; ou margin: 0 auto; via CSS para posicionar mídias.

Onde posso baixar imagens grátis sem problemas de direitos autorais?

Evite baixar direto do Google Imagens. Utilize repositórios de domínio público ou licença Creative Commons Zero (CC0), como o Wikimedia Commons, Unsplash, Pexels e Pixabay. Eles fornecem fotos de altíssima qualidade totalmente liberadas para uso comercial.


🚀 O que estudar a seguir:

Agora que você domina a semântica de mídia no HTML5, está na hora de começar a construir o esqueleto das suas páginas. Seus próximos passos essenciais são:

  • Como criar links e âncoras (A Tag <a>).
  • Tabelas Semânticas em HTML5 (Quando usar de verdade).
  • Introdução ao CSS: Cascading Style Sheets.

Tamanho de Imagem no HTML: Como Usar width, height e CSS

Como Mudar o Tamanho das Imagens no HTML: 

Dominando width, height e a Responsividade 

E aí, futuro(a) ninja do Front-End! Tudo tranquilo?

No tutorial passado do nosso curso de HTML, nós demos um salto gigante: aprendemos como colocar fotos e imagens em um site através da tag <img>. Nossos projetos estão finalmente deixando de ser apenas um bloco de texto sem graça para se tornarem páginas atraentes e visuais.

Mas aposto que você esbarrou em um problema: quando você joga a imagem na tela, ela aparece no tamanho original. Às vezes, gigante demais; outras, minúscula. Neste artigo, vamos assumir o controle do viewport e aprender a manipular a altura e a largura dos nossos elementos visuais usando as propriedades do HTML e as melhores práticas do mercado atual.


Por que mudar a altura e largura de uma imagem?

Posição Zero (Snippet): Como redimensionar imagens no HTML? Para alterar o tamanho de uma imagem, utilizamos os atributos width (largura) e height (altura) na tag <img>. Atualmente, o HTML5 exige que esses valores sejam em pixels estritos, servindo para reservar o espaço da mídia na renderização e evitar quebras de layout.


Lembra que no artigo passado usamos dois logotipos (do Google e da linguagem PHP)? Eles apareceram na tela exatamente do jeito que foram criados. O navegador (Chrome, Edge, Firefox) é obediente: se você não especifica o tamanho na tag <img>, ele vai lá no servidor, pega a foto e joga na sua cara com o tamanho original.

Porém, a função do HTML e do CSS é justamente formatar e decidir como a informação será consumida pelo usuário. Imagine que você foi contratado para criar um portal de notícias (como G1 ou UOL).

Na página principal (Home), você vai exibir apenas um resumo da notícia e uma miniatura da foto (thumbnail). Quando a pessoa clicar, ela entra na matéria e vê a foto em alta resolução, ocupando quase a tela toda.

Se você não souber redimensionar imagens via código, teria que abrir o Photoshop ou o Paint toda vez, criando dois arquivos diferentes para a mesma foto. Um pesadelo de produtividade, certo? É aí que a mágica acontece com o HTML.


A Sintaxe Clássica: Usando width e height

No desenvolvimento Web, nós chamamos as dimensões pelos seus nomes em inglês:

  • width: Significa Largura (eixo horizontal).
  • height: Significa Altura (eixo vertical).

A estrutura base para definir essas medidas é em pixels (px). A sintaxe oficial fica assim:

<img src="URL_DA_IMAGEM.jpg" width="largura_em_numeros" height="altura_em_numeros" alt="Descrição">

Vamos para a prática. A imagem do nosso portal (HTML-Progressivo.png) tem originalmente 388 pixels de largura e 66 pixels de altura. Digamos que para encaixar no cabeçalho, precisamos reduzi-la para 300 de largura por 50 de altura. O código ficaria assim:

<!-- A ordem dos atributos não altera o resultado final! -->
<img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjpF0qAYbxagFbV6ZsWp0hQGnRilE8Qbhy2031cfBzp_uET4Scb0FGsY0HqEsoCSscsrE9lYGa7LwSjKqcsYGzJH0XV4_qmw0Iap2v4z77RKKjRpsRCBMPl_YFJdHS6W1Mq4PIa1WOOsPQ/s1600/HTML-Progressivo.png" 
     width="300" 
     height="50" 
     alt="Curso de HTML online grátis">

Resultado renderizado no seu site:

Curso de HTML online grátis
🛠️ Curiosidade de SEO (Core Web Vitals): Mesmo que você queira usar a imagem no tamanho original, o Google recomenda FORTEMENTE que você sempre digite os atributos width e height no HTML. Isso evita o chamado Cumulative Layout Shift (CLS). Se o navegador já souber o tamanho da imagem, ele reserva aquele "buraco" vazio na tela enquanto ela baixa, impedindo que os textos fiquem pulando enquanto a página carrega.

Seu Código Quebra Quando Tenta Alinhar Imagens? 🛑

Compreender a diferença entre HTML estrutural e CSS visual é o que separa os amadores dos Devs Sêniores. Domine responsividade, Flexbox, Grid e pare de "chutar valores" com a Apostila HTML & CSS Progressivo. Estude offline, no seu tempo.

Capa da Apostila Digital HTML e CSS Progressivo
"Eu sempre sofria com imagens esticadas e layouts que quebravam no celular. A didática dessa apostila foi um divisor de águas na minha carreira Front-End!"
— Marina S., Desenvolvedora Web
🚀 QUERO DOMINAR O FRONT-END AGORA
É do time da velha guarda? Compre o Livro Físico e receba em casa!

A Treta da Distorção (Cuidado com o Aspect Ratio)

Existe um perigo gigantesco ao manipular a largura e a altura na mão: a proporção (Aspect Ratio).

Por exemplo, se uma imagem tem 800x600 originais. Se você quiser reduzir pela metade, precisa calcular a metade exata dos dois lados: 400x300. Se quiser dobrar, 1600x1200.

⚠️ Atenção (Imagens Esticadas): E se você testar colocar width="900" e height="100"? A imagem vai ficar espremida e horrorosa! Se você altera um eixo sem calcular o eixo correspondente, você amassa o conteúdo.

Exercício: Imagens Dobradas

Vamos pegar o logotipo do PHP, que tem exatamente 200 de largura por 106 de altura originais, e criar um HTML que exiba primeiro a imagem original, e depois a versão com o dobro do tamanho (400x212).

<!DOCTYPE html>
<html lang="pt-br">
<head>
    <meta charset="UTF-8">
    <title>Brincando com Altura e Largura</title>
</head>
<body>
    <h3>Imagem em tamanho original (200x106)</h3>
    <img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjsisKyTvNVsVfLmwh7aD6qbUlblOi-alrIFimVb5g23WYPTAiLM-moykO-bXjrXE2esC4_fiSakVG7Lonuka0zOHRsCKtYvBQg7of8oXsyDIECT6-lqEgU_rAwpX_p8JpjUPqLWn1uttk/s1600/PHP-logo.png" 
         width="200" height="106" alt="Logo PHP">
    
    <h3>Imagem com o dobro do tamanho (400x212)</h3>
    <img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjsisKyTvNVsVfLmwh7aD6qbUlblOi-alrIFimVb5g23WYPTAiLM-moykO-bXjrXE2esC4_fiSakVG7Lonuka0zOHRsCKtYvBQg7of8oXsyDIECT6-lqEgU_rAwpX_p8JpjUPqLWn1uttk/s1600/PHP-logo.png" 
         width="400" height="212" alt="Logo PHP Ampliado">
</body>
</html>

Resultado prático:

Original:

Logo PHP

Dobrada (Atenção à perda de resolução natural):

Logo PHP Ampliado

Antes vs. Depois: O Fim das Porcentagens no HTML e a Era do CSS

Antigamente, quando a internet era mato (na era do HTML4), os monitores eram grandes caixotes brancos, todos com mais ou menos a mesma resolução fixa. Naquela época, os desenvolvedores tinham um truque: colocar porcentagens direto na tag HTML, como width="50%" ou width="100%" para fazer a imagem ocupar o tamanho da tela.

O Problema: Hoje temos smartphones, tablets, TVs de 50 polegadas e relógios que acessam a internet. Inserir `%` dentro do HTML virou uma prática condenada (obsoleta) pela documentação oficial da MDN Web Docs. O atributo HTML suporta apenas números inteiros (pixels).

💡 A Solução Moderna (CSS Responsivo): O jeito profissional de fazer uma imagem se adaptar a qualquer tamanho de tela sem distorcer é utilizando CSS! Declaramos as dimensões intrínsecas no HTML, e controlamos a fluidez com o atributo style.

Veja como é o padrão atual do mercado. Vamos mandar a imagem nunca ultrapassar 100% da caixa onde ela está inserida, garantindo que o celular do usuário não exploda o layout da página para os lados:

<!-- A Forma Certa no HTML5 Moderno -->
<!-- width e height originais pro Google carregar rápido, style (CSS) para responsividade! -->
<img src="imagens/foto.jpg" 
     width="800" 
     height="600" 
     style="max-width: 100%; height: auto;" 
     alt="Imagem moderna e responsiva">

O max-width: 100% diz: "Pode diminuir o tamanho se a tela for pequena". E o height: auto diz: "Calcule a altura matematicamente para que a foto não fique esticada/amassada". Bem-vindo ao Web Design Moderno!



Perguntas Frequentes (FAQ)

Devo definir o tamanho da imagem no HTML ou no CSS?

A melhor prática atual é usar os dois em conjunto. Use os atributos estritos width e height na tag HTML com os tamanhos originais do arquivo (para otimização de renderização/CLS do Google), e utilize o CSS (via classes ou estilo embutido) para forçar o comportamento responsivo visual na tela final.

Por que minha imagem ficou distorcida (esticada ou achatada) no site?

Isso acontece quando você quebra a proporção natural (Aspect Ratio) da foto. Se você alterar manualmente a largura de uma imagem sem alterar a altura usando o mesmo multiplicador matemático, a imagem deforma. A solução rápida é definir uma das medidas e usar CSS height: auto; na outra.

O que é Cumulative Layout Shift (CLS) relacionado a imagens?

É uma métrica de experiência do Google. Se o seu HTML não disser a largura e altura da imagem antes dela baixar (omissão de width/height), o texto da página vai "pular" repentinamente para baixo quando a foto terminar de carregar, causando cliques acidentais e penalizando seu SEO.


🚀 O que estudar a seguir:

O front-end moderno é uma construção passo a passo. Prepare-se para os próximos níveis no nosso Sumário:

  • Alinhamento avançado: Deixando Imagens e Textos lado a lado.
  • Imagens Interativas: Como transformar a tag img em um hiperlink clicável.
  • Desvendando a tag <picture> e formatos de nova geração (WebP).