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:

Nenhum comentário: