Frames (Datagrama) são usadas para mostrar mais de um documento HTML em uma janela. Isso significa que você terá menos conteúdo, o que mostra o papel de dizer ao navegador que páginas devem ser exibidas. Desde a introdução de PHP e CSS essa tecnica tem sido cada vez menos utilizada.
Geralmente frames são usadas para exibir o menu em um parate e o conteúdo em outra. Quando alguém clicar em um link do menu, outra página irá abrir a parte do conteúdo.
Exemplicaremos isso com o seguinte código:
html<html>
<head></head>
<frameset cols="30%,*">
<frame src="menu.html">
<frame src="content.html">
</frameset>
</html>
Use o código seguinte:
html<html>
<head></head>
<frameset rows="20%,*">
<frame src="title.html">
<frameset cols="30%,*">
<frame src="menu.html">
<frame src="content.html">
</frameset>
</frameset>
</html>
frameset rows="#%, *" - "rows" estabeleche o peso de cada frame que será exibida. No exemplo anterior, escolhemos que a primeira frame teria 20% e o resto do espaço seria diidido entre menu.html e content.html
Você deve ter percebido que entre as frames há algumas linhas cinzas, que não na maioria das vezes é indesejada. Apagá-las é possivel usando as tags frameborder e framespacing. Esses atibutos serão introduzidos sob a tag frameset.
**Nota: Frameset e frameborder são o mesmo atributo. Alguns navegadores não reconhece os dois deles, apenas um. Dizendo isso, recomendamos usar os dois, por maior segurança.
Aqui um exemplo prático:
html<html>
<head></head>
<frameset border="0" frameborder="0" framespacing="0" rows="20%,*">
<frame src="title.html">
<frameset border="0" frameborder="0" framespacing="0" cols="30%,*">
<frame src="menu.html">
<frame src="content.html">
</frameset>
</frameset>
</html>
Para manter o menu em sua posição atual, e então quando clicarmos para abrir a página de contatos, por exemplo, ao inves da página de conteúdo, iremos nomear cada frame e especificaremos onde ela abrirá usando a tag 'base target'.
Aqui pe o nosso código para a página:
html<html>
<head>
<base target="content">
</head>
<frameset rows="20%,*">
<frame name="title" src="title.html">
<frameset cols="30%,*">
<frame name="menu" src="menu.html">
<name="content" src="content.html">
</frameset>
</frameset>
</html>
Você pode personalizar sua frame ainda mais usando noresize e scrolling
html<html>
<head></head>
<frameset border="2" frameborder="1" framespacing="2" rows="20%,*">
<frame src="title.html" noresize scrolling="no">
<frameset border="4" frameborder="1" framespacing="4" cols="30%,*">
<frame src="menu.html" scrolling="auto" noresize>
<frame src="content.html" scrolling="yes" noresize>
</frameset>
</frameset>
</html>