Mostrando postagens com marcador HTML. Mostrar todas as postagens
Mostrando postagens com marcador HTML. Mostrar todas as postagens

As Tags Frameset e Frame: Como Dividir a Tela no HTML (E a Solução Moderna)

As Tags `frameset` e `frame`: A Evolução para o CSS Moderno

Agora que já fizemos uma breve explicação sobre a história dos frames, vamos entrar nos detalhes técnicos sobre como a web era construída no passado e como nós recriamos esses efeitos na internet de hoje.

Neste tutorial de nosso curso de HTML, iremos dissecar duas tags clássicas que reinaram na época do HTML 4.01: <frameset> e <frame>. Vamos entender como elas dividiam a tela e o que você deve usar hoje para não ser punido pelos buscadores!

Como funcionam as tags `frameset` e `frame`?

Para que serve a tag frameset? No HTML antigo, a tag <frameset> substituía a tag <body> e era usada para dividir a janela do navegador em várias seções (linhas ou colunas). Dentro dela, usava-se a tag <frame> para carregar um documento HTML diferente em cada seção. Hoje, o HTML5 baniu essas tags, e a divisão de telas é feita utilizando CSS (Flexbox ou Grid) combinado com <iframe>.

Muitos desenvolvedores das antigas consideravam os frames a parte mais confusa da criação de sites. O motivo era simples: um site com frames quebrava o padrão normal do HTML.

Até o momento, todos os nossos sites tinham sempre a mesma anatomia: a tag <head> para as configurações e a tag <body> para o conteúdo visível. No entanto, uma página que organiza frames não possui conteúdo próprio. A função dela é apenas dividir a tela e "chamar" outras páginas para preencherem esses espaços.

Por isso, a tag <frameset> substituía completamente o <body>. Dentro deste "Set" (um conjunto configurado), nós definíamos:

  • O número de frames na tela.
  • O tamanho exato (ou em porcentagem) de cada pedaço.
  • A disposição (se a tela seria cortada em colunas verticais ou linhas horizontais).

O Código Antigo: Um Site Dividido ao Meio

Vamos dar um exemplo prático de como isso era feito antigamente. Imagine que queremos criar uma página que divida a tela exatamente no meio: 50% da tela exibe o site da Globo e os outros 50% exibem o site do UOL. O código seria este:

<!DOCTYPE html>
<html>
<head>
    <title>Frames em HTML (Modo Antigo)</title>
    <meta charset="utf-8">
</head>
<!-- A tag frameset substitui o body e corta a tela em duas colunas (cols) de 50% -->
<frameset cols="50%,50%">
    <frame src="http://www.globo.com">
    <frame src="http://www.uol.com.br">
</frameset>
</html>
⚠️ Alerta de SEO e Boas Práticas!
Se você usar o código acima hoje, o Google vai olhar para o seu site e pensar: "Onde está o conteúdo dessa página?" Como o conteúdo pertence a sites externos (Globo e UOL), sua página não ganha relevância nenhuma. Além disso, no celular do usuário, a tela ficaria esmagada. É por isso que o frameset morreu!

O Mercado Mudou. Você Vai Ficar Preso no Passado? 🚀

Enquanto as faculdades e tutoriais antigos continuam ensinando tags obsoletas que destroem o SEO do seu site, o mercado exige programadores que dominem as boas práticas modernas.

Slogan Curso HTML Progressivo
Apostila Completa HTML e CSS

"Eu estava travado tentando entender essas montagens malucas de frames e CSS antigo. A apostila Progressiva mastigou o CSS Grid e o Flexbox de um jeito que salvou meus projetos reais!" - Carlos, Desenvolvedor Front-End.

A Solução Moderna: Flexbox e Iframes

Como nós dividimos a tela hoje no mercado de trabalho sem ser penalizado? Nós usamos a tag <body> normalmente, dividimos o layout usando CSS (Flexbox) e, se precisarmos embutir um site externo, usamos a tag moderna <iframe>.

Veja como recriamos o efeito de dividir a tela em duas colunas (50% / 50%) usando as melhores práticas do HTML5:

<!DOCTYPE html>
<html lang="pt-br">
<head>
    <title>Divisão de Tela Moderna (CSS + Iframe)</title>
    <meta charset="utf-8">
    <style>
        /* Usamos o Flexbox para organizar os elementos lado a lado */
        .container-moderno {
            display: flex;
            width: 100%;
            height: 500px;
            gap: 10px; /* Cria um pequeno espaço entre as janelas */
        }

        /* Cada iframe vai pegar metade do espaço flexível (flex: 1) */
        .meu-iframe {
            flex: 1;
            border: 2px solid #ccc;
            border-radius: 8px;
        }
    </style>
</head>
<body>

    <h2 style="text-align: center;">O Jeito Certo de Embutir Sites Externos</h2>
    
    <div class="container-moderno">
        <!-- O Iframe é um elemento embutido que vive DENTRO do body -->
        <iframe src="https://www.programacaoprogressiva.net" class="meu-iframe" aria-label="Portal Progressivo"></iframe>
        <iframe src="https://pt.wikipedia.org" class="meu-iframe" aria-label="Wikipedia"></iframe><!-- Nota: Alguns sites grandes bloqueiam iframes por segurança -->
    </div>

</body>
</html>
🛠️ Curiosidade Nerd: Alguns sites gigantes (como o Google e o Facebook) possuem travas de segurança chamadas X-Frame-Options para evitar que cibercriminosos clonem seus sites usando Iframes (um ataque chamado Clickjacking). Por isso, se você tentar rodar o código acima com o site do Google, ele vai recusar a conexão e ficar em branco!

Exercício Prático: O Desafio Hacker

A característica mais marcante de desenvolvedores e hackers de elite é a curiosidade implacável e a vontade de fuçar no código. Agora que você entendeu o conceito, que tal um desafio de lógica?

Tente modificar o código CSS moderno que passamos acima para resolver os seguintes problemas:

  1. Como você faria para que o primeiro Iframe ocupe 70% da tela, e o segundo ocupe apenas 30%? (Dica: Pesquise sobre propriedades CSS como `width` ou a função `flex-basis`).
  2. Você seria capaz de colocar 4 iframes na tela, onde cada um deles ocupe exatos 25%? Teste criar isso no seu próprio bloco de notas!



Perguntas Frequentes (FAQ)

Ainda posso usar a tag frameset no HTML5?

Poder até pode, porque os navegadores atuais (como Chrome e Edge) mantêm compatibilidade reversa para não quebrar a "web antiga". Porém, a tag foi oficialmente classificada como obsoleta e banida das especificações do HTML5. Seu uso prejudica o SEO, destrói a responsividade no mobile e é considerado uma má prática extrema no mercado profissional.

Como usar iframes sem quebrar a tela do celular?

O maior erro ao usar <iframe> é declarar width="800" (tamanho fixo). Para manter o site responsivo em qualquer dispositivo móvel, remova os tamanhos fixos da tag HTML e adicione estilos CSS ao elemento: style="max-width: 100%; height: auto;".

Como ter um cabeçalho único em todas as páginas sem usar frames?

Antigamente usava-se frames para não precisar copiar o código do menu em todas as páginas. Hoje, nós usamos linguagens de servidor. A forma mais clássica e eficiente é criar um arquivo menu.php e usar o comando PHP include('menu.php'); em suas outras páginas, injetando o código dinamicamente.



🎯 O que estudar a seguir:

Pare de viver no passado e acelere a sua carreira. Recomendamos os próximos passos:

O Guia Definitivo dos Frames HTML: Do Legado Obsoleto da tag iframe Moderno

O Guia dos Frames HTML: A Evolução para o `< iframe >` Moderno

Bem-vindo a mais uma aula do nosso curso de HTML online! Se você é estudante de tecnologia ou esbarrou no código-fonte de algum sistema muito antigo (como bancos ou sistemas de governo), com certeza já se deparou com a palavra Frame.

Neste tutorial, nós vamos dar uma verdadeira aula de história da internet. Você vai entender por que essa técnica dominou a web nos anos 2000, por que ela foi cruelmente assassinada e banida do HTML5, e o mais importante: qual é a ferramenta que usamos hoje em dia para substituir isso no mercado de trabalho. Prepare-se para o choque de realidade!

O que é um Frame em HTML?

O que são frames no HTML? Originalmente, os frames (tags <frameset> e <frame>) permitiam dividir a tela do navegador em múltiplas janelas independentes, carregando um documento HTML diferente em cada uma delas. Hoje, essas tags estão obsoletas e banidas. A alternativa moderna e segura no HTML5 é a tag <iframe>, usada para incorporar conteúdos externos (como vídeos do YouTube ou Mapas) dentro de uma única página.

Até agora, todas as páginas que você criou no nosso curso se chamavam index.html, contato.html, etc. Ou seja, o navegador exibia um documento HTML inteiro por vez na tela.

A ideia dos frames era literalmente criar "molduras". Em vez de uma página inteira, os webmasters fatiaram a tela: o topo carregava um arquivo cabecalho.html, a lateral esquerda carregava um menu.html e o centro carregava o conteudo.html. Três páginas diferentes sendo exibidas juntas, como um quebra-cabeça.

Qual problema os antigos Frames resolviam?

Imagine que você tem um site com 50 páginas. Todas elas têm exatamente o mesmo cabeçalho e o mesmo menu lateral. Se você precisasse adicionar um link novo no menu, teria que abrir os 50 arquivos HTML e colar o link novo, um por um. Um inferno, concorda?

Os frames resolviam isso! O menu era um arquivo fixo (menu.html). Quando o usuário clicava em "Contato", apenas a "moldura" do conteúdo no meio da tela mudava. O menu e o cabeçalho não recarregavam. Era genial para a época!

⚠️ A Morte dos Frames (O Choque de Realidade)
Embora a ideia fosse boa nos anos 90, os frames geraram problemas catastróficos. O Googlebot (robô do Google) não conseguia ler o site direito para o SEO. Salvar a página nos "Favoritos" quebrava. E com a chegada dos smartphones, as páginas espremidas em molduras viraram um desastre. O HTML5 baniu oficialmente as tags <frameset> e <frame>!

Quer dominar o desenvolvimento moderno e fugir de códigos mortos? 🚀

A internet evolui numa velocidade assustadora. Se você continuar consumindo tutoriais baseados em HTML de 10 anos atrás, seu site nunca vai rankear no Google e nenhuma empresa vai te contratar.

Slogan Curso HTML Progressivo
Apostila Completa HTML e CSS

"A apostila do HTML Progressivo me ensinou exatamente o que as grandes empresas usam hoje: semântica limpa, CSS flexível e nada de gambiarras do passado!" - Carlos, Desenvolvedor Pleno.

Se não usamos Frames, como não repetir o Menu em 50 páginas?

Se você está prestando atenção, deve estar se perguntando: "Ok, os frames morreram. Mas como eu faço para não ter que copiar e colar o código do menu em todas as páginas do meu site hoje em dia?"

A resposta é simples: nós usamos linguagens de programação do lado do servidor (Back-End) ou frameworks modernos (Front-End).

  • A Solução Clássica e Poderosa (PHP): Nós criamos um arquivo chamado menu.php e usamos a função include('menu.php'); em todas as páginas. O PHP injeta o menu automaticamente antes de enviar o site para o usuário! Já temos um Curso de PHP Completo e Gratuito pronto pra você aprender isso!
  • A Solução Front-End (JavaScript): Hoje, aplicações modernas (Single Page Applications) feitas em React ou Vue.js carregam o menu uma vez e usam JavaScript para atualizar apenas o conteúdo do miolo (o DOM), sem recarregar a página. O mesmíssimo conceito dos frames, mas feito do jeito certo!

O Frame que Sobreviveu: O Poderoso `< iframe >`

Embora os frames de layout tenham morrido, o W3C salvou e aprimorou uma tag maravilhosa no HTML5: o Inline Frame (ou simplesmente <iframe>).

🛠️ Curiosidade: Toda vez que você vê um vídeo do YouTube incorporado num blog, um mapa do Google Maps na página de "Onde Estamos", ou um botão de "Curtir" do Facebook solto no meio de um artigo, você está vendo um <iframe> em ação!

O <iframe> funciona como uma janela retangular embutida no meio do seu conteúdo normal. Ele abre um "buraco" na sua página e renderiza o conteúdo de outro site ali dentro, de forma totalmente isolada e segura (sandbox).

Exemplo Prático: Incorporando o seu próprio site

Para usar, basta definir a tag e colocar o link do site externo no atributo src (source/origem):

<!-- Criando um iframe com largura e altura controladas e sem bordas -->
<h3>Navegue pelo nosso portal aqui mesmo!</h3>
<iframe 
    src="https://www.programacaoprogressiva.net" 
    width="100%" 
    height="400" 
    style="border: 1px solid #ccc; border-radius: 8px;" 
    aria-label="Janela do portal Programação Progressiva">
</iframe>

O YouTube facilita tanto a vida dos webmasters que, no botão "Compartilhar > Incorporar" de qualquer vídeo, ele já gera o código HTML do <iframe> pronto para você copiar e colar no seu site!




Perguntas Frequentes (FAQ)

Qual a diferença entre frameset e iframe?

A tag <frameset> era usada no passado para ditar a estrutura física da página inteira (substituindo a tag <body>), dividindo o navegador em telas rígidas. Já o <iframe> (Inline Frame) é usado hoje dentro do <body> como um elemento qualquer (assim como uma imagem), abrindo apenas uma "janela" pontual para exibir conteúdos externos, como vídeos ou mapas.

O uso de iframes prejudica o SEO do meu site?

Não, desde que usado corretamente. O Google entende perfeitamente que um <iframe> de um vídeo do YouTube agrega valor ao seu artigo. O que prejudica o SEO é colocar o texto original do seu site dentro de um iframe, pois o robô do Google pode não indexar aquele texto como sendo da sua página.

Como deixar um iframe responsivo para celulares?

Para evitar que o iframe quebre a tela do celular, nunca use width fixo em pixels (ex: width="800"). A forma moderna de fazer isso é aplicar regras CSS diretamente nele: defina max-width: 100%; e height: auto;, ou envolva o iframe numa <div> responsiva baseada em aspecto (Aspect Ratio).



🎯 O que estudar a seguir:

A arquitetura moderna exige soluções de verdade. Escolha seu próximo passo para se tornar um mestre Web:

Como Criar Tabelas Aninhadas e Mudar Cores no HTML (Do Legado ao CSS)

Como Criar Tabelas Aninhadas e Alterar Cores no HTML (Do Legado ao CSS Moderno)

Fala, futuro mestre do Front-End! Tudo tranquilo por aí? Se você chegou até aqui no nosso curso completo de HTML, você já sabe montar a estrutura básica de uma tabela, definir cabeçalhos e bordas. Mas a web não é feita só de linhas em preto e branco, certo?

Hoje, vamos mergulhar em dois conceitos clássicos e fundamentais: como injetar cores nas suas células (e as tretas de como se fazia antigamente vs como se faz hoje) e o poderoso conceito de Tabelas Aninhadas (colocar uma tabela dentro de outra). E para não ficar só na teoria chata, vamos construir juntos um pedaço de um tabuleiro de Sudoku. Bora codar!

O Que São Tabelas Aninhadas e Cores no HTML?

Como centralizar ou colorir uma tabela e o que é aninhamento? Uma tabela aninhada ocorre quando inserimos a tag <table> dentro de uma célula <td> de outra tabela. Para alterar a cor de fundo, usava-se o atributo legado bgcolor, mas a forma moderna e recomendada é usar a propriedade background-color através do CSS.

A Evolução das Cores: Do `bgcolor` ao CSS

Antigamente (na época do HTML4), os desenvolvedores controlavam a aparência visual diretamente nas tags HTML. Queríamos uma linha vermelha? Metíamos um bgcolor="red" na tag <tr>. Mas isso gerava uma sopa de letrinhas caótica no código.

⚠️ Atenção: A Separação de Responsabilidades!
Hoje em dia, o HTML serve apenas para estrutura e semântica. O visual fica 100% por conta do CSS. O atributo bgcolor está obsoleto. Mostraremos ele aqui para fins de bagagem histórica (você VAI esbarrar nisso em sistemas legados), mas foque na solução CSS.

Veja a comparação de uma linha de tabela colorida:

<!-- O Jeito Antigo (Legado/Não Recomendado) -->
<tr bgcolor="#ff0000">
    <td>Linha Vermelha</td>
</tr>

<!-- O Jeito Moderno com CSS Inline -->
<tr style="background-color: #ff0000; color: white;">
    <td>Linha Vermelha</td>
</tr>

Cansado de se perder nos códigos e quer dominar o Front-End de verdade? 🚀

A internet está cheia de tutoriais rasos. Se você quer estudar sem depender de internet, fugir de anúncios e ter o mapa completo do zero ao profissional, você precisa do material certo.

Slogan Curso HTML Progressivo
Apostila Completa HTML e CSS

"Estava travado tentando entender essas tags e a transição para o CSS, essa apostila salvou meus projetos e clareou minha mente!" - Carlos, Desenvolvedor.

Tabelas Aninhadas: Criando o Tabuleiro de Sudoku

Antes do advento do CSS moderno (onde usamos Flexbox e CSS Grid para layouts de sites), os webmasters estruturavam páginas inteiras usando tabelas dentro de tabelas. Era um pesadelo de manutenção, mas a lógica do aninhamento continua útil para dados complexos.

🛠️ Curiosidade Nerd: Nos anos 90, o menu lateral do site ficava em um <td> e o conteúdo principal em outro. Hoje, usar tabelas para layout penaliza o SEO do seu site no Google. Use tabelas apenas para exibir dados tabulares (como planilhas, horários ou nosso jogo abaixo).

Um tabuleiro de Sudoku é perfeito para ilustrar isso. Ele é um quadradão de 9 células (3x3). Dentro de cada uma dessas 9 células maiores, existe outro quadradinho de 9 células (3x3). Vamos ver como isso fica na sintaxe do HTML:

<!-- Tabela Mestre (O Tabuleiro Principal) -->
<table style="border: 2px solid black; background-color: #000; margin: 0 auto;" cellpadding="5" cellspacing="2">
    <tr style="text-align: center;">
        
        <!-- CÉLULA 1 DO TABULEIRO MESTRE -->
        <td style="background-color: white;">
            <!-- Tabela Aninhada (O bloco 3x3 interno) -->
            <table border="1" cellspacing="0" cellpadding="8" style="border-collapse: collapse;">
                <tr> <td>3</td> <td>5</td> <td>7</td> </tr>
                <tr> <td>4</td> <td>6</td> <td>8</td> </tr>
                <tr> <td>9</td> <td>1</td> <td>2</td> </tr>
            </table>
        </td>

        <!-- CÉLULA 2 DO TABULEIRO MESTRE -->
        <td style="background-color: white;">
            <table border="1" cellspacing="0" cellpadding="8" style="border-collapse: collapse;">
                <tr> <td>6</td> <td>8</td> <td>2</td> </tr>
                <tr> <td>6</td> <td>9</td> <td>5</td> </tr>
                <tr> <td>1</td> <td>3</td> <td>7</td> </tr>
            </table>
        </td>

        <!-- CÉLULA 3 DO TABULEIRO MESTRE -->
        <td style="background-color: white;">
            <table border="1" cellspacing="0" cellpadding="8" style="border-collapse: collapse;">
                <tr> <td>4</td> <td>5</td> <td>9</td> </tr>
                <tr> <td>6</td> <td>7</td> <td>2</td> </tr>
                <tr> <td>8</td> <td>3</td> <td>1</td> </tr>
            </table>
        </td>

    </tr>
</table>

Resultado Prático Visual:

Veja como o navegador do seu usuário irá renderizar esse código. Repare nas bordas mais grossas separando os blocos (feitas pela tabela pai com fundo preto) e nas bordas finas dos números (tabelas filhas):

3 5 7
4 6 8
9 1 2
6 8 2
6 9 5
1 3 7
4 5 9
6 7 2
8 3 1
💡 Dica de Mestre sobre Identação:
Quando o código começa a ficar profundo (tabela dentro de linha dentro de tabela), identar o código (dar os espaços à esquerda) é caso de vida ou morte. Se você esquecer de fechar um </td>, todo o tabuleiro do seu Sudoku vai quebrar na tela!


Perguntas Frequentes (FAQ)

Ainda posso usar atributos como width, cellspacing e bgcolor no HTML5?

Eles continuam funcionando na maioria dos navegadores modernos para manter compatibilidade com a "web velha" (Backward Compatibility). No entanto, são considerados deprecated (obsoletos) pela W3C. A melhor prática do mercado é sempre transferir essa parte visual para o CSS.

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

O robô do Google lê seu site pelas tags. Quando ele acha uma tag <table>, ele espera ler dados e planilhas cruzadas. Se ele acha o cabeçalho e o menu de navegação do seu site lá dentro, ele não entende a hierarquia, o que derruba seu SEO. Além disso, tabelas aninhadas complexas são horríveis de tornar responsivas para celulares. Em vez disso, use `<div>` com CSS Grid e Flexbox!



O Que Estudar a Seguir?

Agora que você domina as tabelas em sua essência, está na hora de subir o nível. Não pare por aqui! Recomendamos os seguintes próximos passos na sua jornada de Front-End:

  • Como criar formulários interativos em HTML (Inputs, Textarea e Botões).
  • Introdução ao CSS: Como vincular uma folha de estilos à sua página.
  • Listas Ordenadas e Desordenadas: Construindo menus de navegação semanticamente corretos.

Como Controlar Tamanho e Espaçamento de Tabelas (HTML e CSS Moderno)

Dando continuidade à nossa seção sobre tabelas em nosso curso de HTML online e gratuito, vamos ensinar neste artigo como definir as características visuais das suas tabelas de forma profissional. Você vai aprender a controlar o tamanho, o espaçamento das células e os alinhamentos que manterão o layout do seu site impecável.

Se olharmos as tabelas que usamos como exemplos em nossos tutoriais anteriores, como no artigo em que explicamos como expandir as células de uma tabela (colspan e rowspan), notaremos uma coisa: todas elas tinham tamanhos automáticos e meio engessados.

Como definir o tamanho e espaçamento em tabelas HTML?

Como formatar tabelas? A forma mais moderna é usando CSS. O atributo width define a largura total, enquanto a propriedade padding substitui o antigo cellpadding para o espaçamento interno das células. Já o border-spacing substitui o cellspacing para a distância entre elas. Esqueça os atributos HTML obsoletos e controle o layout via folha de estilos!

🛠️ Curiosidade: A engine de renderização (o "motor" do seu navegador) adora quando você separa a estrutura (HTML) da apresentação (CSS). Antigamente, os webmasters faziam tudo misturado, o que deixava o DOM (Document Object Model) pesado e lento. Hoje, o mercado exige código limpo e semântico!

O Tamanho de uma Tabela: Saindo do Padrão Automático

Antigamente, o navegador apenas tentava "adivinhar" o tamanho ideal baseado no texto. Veja como ficava uma tabela crua:
Linguagens de programação (Sem formatação)
Tipos de linguagem
Linguagens para
desenvolvimento Web
HTML
JavaScript
PHP
Ficava espremida, certo? Como desenvolvedor Front-End, quem manda na tela (viewport) é você, e não o navegador!

Tamanho Fixo em Pixels (px) vs Responsivo (%)

No passado obscuro da internet, usávamos o atributo direto no HTML: ``. O jeito moderno (A Evolução): Usar a propriedade CSS width.

1. Tamanho em Porcentagem (%) - O Rei do Responsivo:

Se você quer que seu site se adapte à tela do celular ou do monitor ultrawide do seu usuário, a porcentagem é sua melhor amiga. Se definirmos width: 50%;, a tabela ocupará metade da tela visível.

<!-- O Jeito Moderno usando CSS in-line -->
<table style="width: 50%; border: 1px solid #000;">
   <caption>Tabela Responsiva: 50%</caption>
   <tr>
      <td>Primeira Coluna</td>
      <td>Segunda Coluna</td>
   </tr>
</table>
Resultado Prático:
Tabela Responsiva: 50%
Primeira Coluna Segunda Coluna


Banner Curso HTML Progressivo

🚀 Destrave sua Carreira Front-End Hoje!

Sabemos que essa sopa de letrinhas do HTML e CSS assusta no começo. Mas e se você tivesse o passo a passo completo, com projetos reais, para estudar offline, no seu ritmo e sem anúncios pipocando na tela?

"Estava travado tentando entender essas regras de CSS e layouts antigos, essa apostila salvou meus projetos na faculdade e no estágio!" - Carlos, Desenvolvedor.
Apostila HTML e CSS Progressivo PDF BAIXAR APOSTILA DIGITAL AGORA
Prefere sentir o cheiro das páginas? Compre o Livro Físico impresso aqui.


O atributo cellspacing e o CSS border-spacing

💡 Dica de Ouro: O atributo cellspacing="10" era usado na tag <table> para empurrar as células para longe umas das outras. Hoje, a forma validada pela W3C e amada pelo Google é usar CSS: border-spacing: 10px;.

Ao usarmos o espaçamento entre as células, evitamos que as bordas fiquem coladas umas nas outras. Veja a simulação moderna:

/* O CSS resolve isso brilhantemente */
table.espacada {
    border-collapse: separate; /* Fundamental para o border-spacing funcionar */
    border-spacing: 15px;      /* Substitui o cellspacing="15" */
}
Célula com respiro (Fora) Célula com respiro (Fora)


A treta do Cellpadding: Dando espaço interno!

Você já entrou num elevador lotado? É horrível, né? O texto das suas células se sente da mesma forma quando você não usa preenchimento interno. É para dar esse "respiro de acolchoamento" dentro da célula que usávamos o cellpadding="10". Na web moderna, nós jogamos o cellpadding no lixo e abraçamos a gloriosa propriedade CSS chamada padding, aplicada diretamente nos elementos <th> (cabeçalhos) e <td> (dados).

<table style="border-collapse: collapse; width: 100%;">
   <tr>
      <!-- O padding de 20px cria uma "almofada" gordinha ao redor do texto -->
      <td style="padding: 20px; border: 1px solid #333;">Texto Confortável</td>
   </tr>
</table>

⚠️ Atenção: Não confunda! margin (ou border-spacing) empurra os vizinhos para longe (espaçamento EXTERNO). padding (ou cellpadding) empurra as bordas para longe do seu próprio conteúdo (espaçamento INTERNO).



O atributo align: Centralizando com classe

Por fim, no passado sombrio tentávamos usar <tr align="center"> para centralizar o texto das células. Mais uma vez, isso suja o HTML. Para alinhar os elementos, a boa prática exige o uso do CSS text-align:
  • text-align: left; (Alinhamento padrão, à esquerda)
  • text-align: center; (Centraliza o texto na célula)
  • text-align: right; (Excelente para colunas que exibem preços e números em tabelas financeiras)
Para estudos mais profundos sobre CSS em tabelas, sempre recomendamos a leitura oficial da documentação no MDN Web Docs sobre Tabelas.


Perguntas Frequentes (FAQ)

Por que não devo usar width, cellpadding e cellspacing direto no HTML?

Porque esses atributos foram descontinuados na versão do HTML5. Misturar design com estrutura prejudica o SEO do seu site, a acessibilidade para leitores de tela e dificulta a manutenção do código. O correto é isolar toda a estilização visual no CSS.

Como centralizar a tabela inteira na tela usando CSS?

Para centralizar a caixa da tabela no navegador (não o texto dentro dela), adicione a regra margin: 0 auto; na declaração CSS da sua tag <table>. Isso criará margens laterais iguais e automáticas.

Ainda posso criar o layout inteiro do site usando tabelas?

Não! Essa era uma prática comum nos anos 2000, mas hoje é considerada um erro gravíssimo. Tabelas devem ser usadas exclusivamente para dados tabulares (como relatórios, planilhas e horários). Para layouts e grids estruturais complexos, estude Flexbox e CSS Grid.


🎯 O que estudar a seguir:

Como Fazer um Texto Rolando na Tela (Tag Marquee e CSS)

Tag <marquee>: Como Fazer Texto Rolando (E a Forma Certa com CSS)

Como fazer um texto rolar na tela? Historicamente, o HTML usava a tag <marquee> para criar textos deslizando. Hoje, essa tag é obsoleta. A forma correta e moderna de criar letreiros é combinando uma div no HTML com as propriedades @keyframes e transform: translateX() do CSS.

Como o nosso curso Programação Progressiva visa ensinar absolutamente tudo sobre a criação de sites, nós vamos, ao longo desta jornada, dar umas pausas no conteúdo estritamente teórico para mostrar alguns efeitos visuais e truques bacanas que chamam a atenção do usuário.

Se você navegou na internet nos anos 2000, com certeza já viu sites com textos deslizando da direita para a esquerda, piscando em neon ou quicando nas bordas da tela. É o famoso efeito "Letreiro de Padaria". Vamos aprender como isso era feito e como os desenvolvedores Sêniors fazem isso hoje.


A Versão Clássica (e Proibida): A Tag <marquee>

Antigamente, se você quisesse fazer um texto desfilar na tela, bastava "abraçar" esse texto com a tag <marquee>. Era absurdamente simples. Você escrevia no seu arquivo HTML algo assim:

<!DOCTYPE html>
<html lang="pt-BR">
  <!-- A Tag clássica de rolagem -->
  <marquee>
    Seja bem-vindo ao portal Programação Progressiva!
  </marquee>
</html>

Resultado Clássico:

Seja bem-vindo ao portal Programação Progressiva!
⚠️ Atenção: A treta da tag Obsoleta! O W3C (órgão que padroniza a internet) descontinuou a tag <marquee> no HTML5. Os navegadores ainda aceitam por "dó" e compatibilidade com sites velhos, mas você nunca deve usá-la em um projeto profissional moderno. O HTML foi feito para estruturar o texto, não para animá-lo. Para animações, usamos o CSS!

Quer dominar o HTML5 e o CSS3 de verdade?

Não fique preso a códigos dos anos 90. Aprenda as técnicas modernas e profissionais que as grandes empresas exigem hoje em dia para contratar um Desenvolvedor Front-End.

Apostila Digital HTML e CSS Progressivo
"Eu copiava códigos sem entender. Com essa apostila eu aprendi a pensar de forma moderna usando CSS! Recomendo muito!" - João Vitor, Web Designer.
🚀 Baixar a Apostila Completa (PDF)
📚 Ou receba o Livro Físico em Casa

A Versão Moderna: Recriando o Marquee com CSS

Para fazermos do jeito certo (o famoso "Antes vs. Depois"), nós isolamos o HTML para cuidar apenas do texto, e usamos o CSS para fazer o trabalho pesado da animação através da regra @keyframes.

Veja como um código moderno é muito mais limpo e organizado:

<!-- O HTML apenas estrutura a informação -->
<div class="container-rolagem">
  <p class="texto-animado">🚀 Olha eu rolando de forma otimizada e sem usar tags velhas!</p>
</div>

<style>
/* O CSS controla o palco e a animação */
.container-rolagem {
  overflow: hidden; /* Esconde o texto que sai da caixa */
  white-space: nowrap; /* Impede o texto de quebrar a linha */
  background: #0f172a;
  color: #38bdf8;
  padding: 10px;
  border-radius: 5px;
}

.texto-animado {
  display: inline-block;
  /* Chama a animação chamada 'rolar', dura 10s, ritmo constante (linear) e repete ao infinito */
  animation: rolar 10s linear infinite; 
}

/* Criando o quadro a quadro da animação */
@keyframes rolar {
  0% { transform: translateX(100%); } /* Começa totalmente à direita */
  100% { transform: translateX(-100%); } /* Termina totalmente à esquerda */
}
</style>

Resultado Moderno com CSS:

🚀 Olha eu rolando de forma otimizada e sem usar tags velhas!


🕵️‍♂️ Exercício: Modo Hacker (Inspecionando Códigos)

Boa parte do aprendizado de um Webmaster Sênior é a análise e o estudo do código dos outros. Isso é "hackear" no sentido puramente raiz da palavra: buscar informações, dissecar sistemas e descobrir novos conhecimentos.

Abaixo, eu coloquei 3 efeitos usando a tag antiga (apenas para fins de estudos). O seu exercício é clicar com o botão direito sobre eles, escolher a opção Inspecionar Elemento (Inspect) no Google Chrome e descobrir quais são os atributos extras que eu coloquei dentro da tag para fazer esses comportamentos acontecerem.

1. Efeito Bate e Volta:

Estou batendo e voltando igual bola de sinuca...

2. Na Contra-Mão:

Tô na contra-mão!

3. Elevador:

Olha mãe, to subindo pro topo!

Conseguiu descobrir lendo o código-fonte? Esses "comandos" extras que modificam o comportamento de uma tag se chamam Atributos, e eles são exatamente o assunto da nossa próxima aula!



Perguntas Frequentes (FAQ)

1. A tag marquee afeta o SEO do meu site?

Sim, de forma indireta. Como é uma tag descontinuada (deprecated) pelo HTML5, o Google pode considerar o código do seu site antiquado e não-otimizado. Além disso, elementos em movimento constante, sem controle de pausa, prejudicam severamente a nota de acessibilidade do Core Web Vitals, penalizando o rankeamento.

2. Se a tag é obsoleta, por que os navegadores ainda exibem?

Isso acontece devido ao princípio de "Retrocompatibilidade" da web. O Google Chrome e o Firefox mantêm o suporte para não "quebrar" milhões de páginas antigas criadas nos anos 90 e 2000 que dependem dessa tag para funcionar, mas ela foi removida da documentação oficial moderna (MDN).

3. Qual a vantagem de usar a animação no CSS em vez do HTML?

O CSS foi criado exatamente para estilização e animação. Ao usar @keyframes com a propriedade transform, a animação do seu texto rolando é processada pela Placa de Vídeo (GPU) do usuário, e não pelo Processador (CPU), o que deixa a rolagem fluida, sem engasgos (60 fps) e economiza bateria de celulares.


📚 O que estudar a seguir:

Na nossa missão hacker acima, você descobriu códigos misteriosos dentro da tag. Seu próximo passo é dominar isso:

  • O que são Atributos em HTML? (Modificando o comportamento).
  • A anatomia de um elemento (Tag + Atributo + Valor).
  • Introdução às Imagens e Links (Que dependem inteiramente de atributos).

O que é a Tag < HTML > ? Entenda o Elemento Raiz do seu Site

A Tag <html>: O Início de Tudo (E o Atributo Oculto do SEO)

Agora que você já aprendeu no nosso tutorial anterior o que são tags e como elas funcionam como "etiquetas" para o navegador, chegou a hora de colocar a mão na massa. Vamos começar a apresentar as tags mais importantes do Front-End.

E nada mais justo do que começarmos pelo começo: o elemento raiz. Vamos dissecar a tag <html>.

O que é a Tag <html>? (O Elemento Raiz)

O que é a tag html? A tag <html> é o elemento raiz de uma página web. Ela envolve absolutamente todo o conteúdo do site e informa ao navegador que o documento inteiro deve ser interpretado e renderizado como um código HTML válido, servindo de base para o DOM.

O par <html> e </html> vem, na gigantesca maioria dos casos, logo na linha 2 do seu documento, imediatamente após a nossa velha conhecida, a declaração <!DOCTYPE html>.

Você pode se perguntar: "Ué, se nós já avisamos no DOCTYPE que o documento é HTML, por que precisamos abrir uma tag <html>? Isso não é óbvio?"

Na verdade, não. Há uns 20 anos, eu concordaria com você, pois as páginas de internet eram praticamente blocos de texto em HTML puro. Porém, hoje em dia, 99,99% das páginas da web são uma mistura complexa de tecnologias:

  • HTML interagindo com CSS (para o design).
  • HTML rodando scripts de JavaScript (para interatividade).
  • HTML recebendo dados dinâmicos do PHP, Java, Python ou Node.js.

Ou seja, embora o HTML sozinho construa a página, todas essas outras linguagens precisam do HTML como hospedeiro. Se você quiser se tornar um desenvolvedor Front-End ou Full-Stack de respeito, não adianta pular etapas e tentar aprender frameworks como React ou Angular antes de dominar a base estrutural.


Quer parar de "chutar" códigos e entender o que está fazendo?

Aprenda a base sólida do Front-End. Transforme a criação de sites em uma profissão rentável e conquiste o mercado com nosso material exclusivo.

Apostila Digital HTML e CSS Progressivo
"Eu achava que precisava decorar tudo, mas a apostila me ensinou a pensar como um programador de verdade. Hoje faço layouts do zero!" - Rafael, Desenvolvedor Web.
🚀 Baixar a Apostila Digital (PDF)
📚 Prefere estudar no papel? Compre o Livro Físico

A anatomia do código: Escrevendo sua primeira página

Vamos criar o nosso primeiro site super simples que exiba uma mensagem na tela, colocando os elementos que já aprendemos na prática.

<!DOCTYPE html>
<html>
  Estou aprendendo a criar sites!<br>
  Tudo isso graças ao portal Programação Progressiva!
</html>

Resultado no Navegador:

Estou aprendendo a criar sites!
Tudo isso graças ao portal Programação Progressiva!

O Segredo de Ouro: O atributo lang (Bônus de SEO)

Embora o código acima funcione, nós do Programação Progressiva não queremos que você seja um programador mediano. Queremos que você crie códigos de alto nível. E aqui entra um detalhe moderno que não existia nas versões antigas do HTML: a definição de idioma.

Para ajudar os motores de busca (como o Google) a ranquearem seu site no país certo, e para ajudar leitores de tela (acessibilidade para deficientes visuais) a pronunciarem as palavras corretamente, você deve sempre adicionar o atributo lang dentro da tag <html>.

<!-- pt-BR significa Português do Brasil -->
<html lang="pt-BR">
  Conteúdo do seu site aqui...
</html>
💡 Dica de SEO Técnico: Se o seu site for em inglês, você usará lang="en". Se o Google detectar que seu site está em português, mas a tag html estiver configurada como inglês, ele pode exibir aquele popup chato de "Deseja traduzir esta página?" para usuários nativos, o que arruina a experiência (UX).

Letras maiúsculas ou minúsculas? A regra do Case Sensitive

Na época do finado XHTML (que era extremamente rigoroso), escrever uma tag com letra maiúscula fazia o seu site quebrar. Hoje, graças à flexibilidade do HTML5, a linguagem não é case sensitive (não diferencia maiúsculas de minúsculas).

Ou seja, para o navegador, não importa se você escreve:

  • <html>
  • <HTML>
  • Ou a versão mIguXaaH da internet dos anos 2000: <HtMl>
⚠️ Atenção aos Padrões: Apesar de funcionar, evite escrever tags em maiúsculas (ou misturadas). A convenção mundial da MDN Web Docs e dos melhores desenvolvedores é escrever todas as tags HTML sempre em letras minúsculas. Isso mantém seu código limpo, profissional e fácil de ler.

🏋️ Exercício Prático: Site de Letra de Música

A teoria só vira conhecimento através da prática. Sua missão é a seguinte:

  1. Abra o seu Bloco de Notas ou VS Code.
  2. Crie um site que exiba no navegador a letra da sua música favorita.
  3. Seja profissional: use o <!DOCTYPE html> na linha 1.
  4. Abra a tag <html lang="pt-BR"> e a feche no final.
  5. Lembre-se de usar a tag <br> para criar a quebra de linha após cada verso/frase da letra.

P.S.: E por favor, evite colocar as letras da banda Restart! (A nostalgia bateu forte agora, hein?).



Perguntas Frequentes (FAQ)

1. Posso colocar conteúdo fora da tag html?

A única coisa que deve ficar fora (e antes) da tag <html> é a declaração <!DOCTYPE html>. Todo o resto (textos, imagens, links, scripts) deve obrigatoriamente estar encapsulado dentro da tag de abertura e fechamento do html. Se você colocar fora, o navegador tentará corrigir o erro forçando o conteúdo para dentro, mas isso é considerado uma péssima prática.

2. O que acontece se eu esquecer o atributo lang?

Seu site vai funcionar normalmente na tela, mas você perderá pontos cruciais de acessibilidade (leitores de tela não saberão com qual sotaque ler o texto para um deficiente visual) e os motores de busca (Google, Bing) terão mais dificuldade para categorizar o idioma principal do seu site, o que pode prejudicar o seu rankeamento orgânico.

3. Qual a diferença entre a tag html e o head/body?

A tag <html> é o contêiner mestre (a raiz). Dentro dela, o documento se divide em duas partes vitais: a tag <head> (que guarda as configurações invisíveis, como título e links de CSS) e a tag <body> (que guarda tudo o que é visível para o usuário na tela do navegador).


📚 O que estudar a seguir:

Agora que você entende o elemento raiz do HTML, seu próximo passo é entender como dividir esse documento. Prepare-se para estudar:

  • A tag <head>: O cérebro invisível do seu site.
  • A tag <body>: Construindo a parte visual da página.
  • A tag <title>: Como colocar o nome do seu site na aba do navegador.

O Que São Tags em HTML? O Guia Definitivo para Iniciantes

O Que é uma Tag em HTML? Entenda a Base da Criação de Sites

Neste tutorial fundamental do nosso curso de HTML, vamos desvendar o principal conceito por trás das linguagens de marcação. Se você quer aprender a criar sites, existe uma palavra que fará parte do seu vocabulário todos os dias a partir de agora: as famosas tags.

Sem elas, a internet seria apenas um bloco de texto sem formatação, sem cores, sem imagens e sem links. Vamos entender de uma vez por todas o que elas são e como utilizá-las.

Quer dominar o Front-End e criar sites profissionais?

Transforme seus estudos em uma profissão altamente lucrativa. Domine a base do HTML e CSS com o nosso material completo e conquiste o mercado de tecnologia.

Apostila Digital HTML e CSS Progressivo
"A didática da apostila é incrível. Consegui entender conceitos que antes pareciam grego e hoje já pego meus primeiros freelas de criação de sites!" - Mariana, Web Designer.
🚀 Baixar a Apostila Digital (PDF)

O que, afinal, é uma tag em HTML?

Provavelmente você já ouviu a palavra "tag" em outro contexto. Nas redes sociais ou em blogs, as tags (ou hashtags) são palavras-chave usadas para classificar um assunto. Porém, no mundo da programação e do HTML, o sentido é muito mais literal.

A tradução de tag para o português é etiqueta. E é exatamente isso que faremos: vamos colocar "etiquetas" em nossos textos para que o navegador de internet (Chrome, Safari, Firefox) saiba como exibi-los.

A analogia do recado

Imagine que sua mãe precisa sair e deixa um dinheiro em cima da mesa para você. Como você sabe o que fazer com aquele dinheiro? A maneira mais simples seria ela deixar um recadinho num post-it: "Compre pão e leite".

As tags no HTML funcionam exatamente como esse bilhete. Elas são recados que você deixa para o navegador web interpretar: "Ei, navegador, pegue essa frase e exiba em negrito" ou "Ei, navegador, transforme esse texto num link".


A Sintaxe Perfeita: Os Símbolos < > e </ >

Para que o navegador não confunda o seu texto normal com uma "ordem" (tag), nós precisamos isolar esses comandos usando os sinais de menor que < e maior que >.

A grande maioria das tags existe em pares, abraçando o conteúdo. Precisamos dizer onde o efeito começa e onde ele termina. A tag de fechamento é idêntica à de abertura, mas possui uma barra / logo após o primeiro sinal.

  • Tag de Abertura: <nome-do-comando>
  • O Conteúdo: O texto ou elemento que será afetado.
  • Tag de Fechamento: </nome-do-comando>

Tudo o que estiver entre a tag de abertura e a tag de fechamento sofrerá a marcação escolhida.


Prática: Criando nossa própria linguagem (Prog HTML)

Para o conceito fixar na sua mente, vamos brincar de inventar uma linguagem de marcação. Imagine que você foi convidado para dar um discurso num evento internacional de tecnologia. Para não se perder, você anota o discurso e cria "tags de comportamento" no papel.

  • Na introdução, você deve falar com calma. Vamos usar a tag: <devagar>
  • No meio, você deve apontar para o projetor. Vamos usar a tag: <slides>
  • No fim, você deve expressar gratidão. Vamos usar a tag: <agradecer>

Aplicando a nossa linguagem "Prog HTML", o seu discurso ficaria estruturado assim:

<devagar>
Olá, meu nome é Geddy Lee, sou Desenvolvedor Front-End e hoje vou falar sobre HTML.
</devagar>

<slides>
Como podem ver neste gráfico, estas são as linguagens mais usadas no mundo.
</slides>

<agradecer>
Gostaria de agradecer a todos pela atenção e ao Curso HTML Progressivo.
</agradecer>

Note como a estrutura é limpa! Fica claro para você (o "navegador" do discurso) exatamente onde começa e onde termina cada comportamento, sem misturar as coisas. É exatamente assim que o Google Chrome lê o seu código para montar a página na tela do usuário.


🏋️ Exercício de Fixação: A sua rotina em Tags

Crie, no papel ou no Bloco de Notas, a sua própria linguagem de marcação fictícia. Em seguida, escreva um texto narrando a sua rotina para estudar programação.

Invente tags como <ligar-pc>, <foco-total>, <tomar-cafe> e aplique-as abraçando as frases correspondentes. Lembre-se de fechar todas as tags com a barra /!


Perguntas Frequentes (FAQ)

1. Todas as tags HTML precisam de fechamento?

A maioria sim, mas existem exceções. As chamadas "Void Elements" ou tags vazias não possuem conteúdo interno e, portanto, não precisam de uma tag de fechamento. Exemplos famosos incluem <br> (quebra de linha) e <img> (inserir imagem).

2. O que acontece se eu esquecer de fechar uma tag?

O navegador tentará "adivinhar" o que você quis fazer, o que geralmente resulta em um site quebrado. Por exemplo, se você esquecer de fechar uma tag de negrito <strong>, o navegador pode deixar a página inteira, até o rodapé, em negrito. Sempre revise o fechamento das tags.

3. Posso colocar uma tag dentro da outra?

Sim! Isso se chama aninhamento (nesting). Por exemplo, você pode colocar uma tag de itálico dentro de uma tag de parágrafo. O segredo é fechar as tags na ordem inversa que foram abertas. O primeiro a abrir deve ser o último a fechar.