Este documento visa mostrar como utilizar frames em uma webpage. Frames em HTML permitem que documentos sejam montados em partes, onde cada parte é exibida em uma "janela" ou "sub-janela". Desta forma o projetista da página pode manter algumas partes do documento sempre visíveis, enquanto outras podem ser "roladas" (scrolled), ou trocadas. Por exemplo, dentro de um mesmo documento, um frame pode ser utilizado para colocar um banner estático, outro para colocar um menu, e um terceiro para colocar o texto principal que pode ser rolado ou trocado através do menu colocado no segundo frame.
Um documento HTML que descreve um leiaute de frames é chamado frameset). Um documento padrão HTML possui uma seção cabeçalho (head) e uma seção corpo (body). Um documento frameset possui um cabeçalho (head), mas não possui uma seção corpo (body), no lugar uma seção frameset deve ser criada.
A seção frameset de um documento especifica o formato no qual a página será exibida na janela do browser. Adicionalmente, a seção frameset pode conter um elemento chamado noframes, que provê uma alternativa de conteúdo caso o broswer não consiga exibir os frames.
Elementos que fazem parte de uma seção body não podem aparecer antes do primeiro comando frameset, senão o frameset será ignorado.
Abaixo é apresentada a descrição em HTML daquilo que seria um documento com frames:
<html> <head> <title>Um documento com frames</title> </head> <frameset cols="20%, 80%"> <frameset rows="100, 200"> <frame src="ConteúdoDoFrame1.html"> <frame src="ConteúdoDoFrame2.gif"> </frameset> <frame src="ConteúdoDoFrame3.html"> <noframes> <p> Este documento contêm: <ul> <li><a href="ConteúdoDoFrame1.html">Um menu qualquer</a> <li><img src="ConteúdoDoFrame2.gif" alt="Uma imagem qualquer"> <li><a href="ConteúdoDoFrame3.html">Um texto qualquer</a> </ul> </noframes> </frameset> </html>
O exemplo acima mostrará algo parecido com o abaixo (se você deseja ver como este exemplo ficará em um browser clique aqui):
+----------------+------------------------------------------+ | | | | | | | Frame1 | | | | | | | | +----------------+ | | | | | | | | | Frame3 | | | | | | | | Frame2 | | | | | | | | | | | | | | | | | +----------------+------------------------------------------+
No exemplo anterior, o atributo rows define o número de espaços horizontais no frameset. O atributo cols define o número de espaços verticais.
Frames são criados da esquerda para a direita para as colunas, e de cima para baixo para as linhas.
Por exemplo, se você quiser dividir a tela verticalmente em dois frames, deve-se usar o seguinte comando:
<frameset rows="50%, 50%"> ... o resto da definição ... </frameset>
Frames podem ser aninhados em qualquer nível. No exemplo acima, um frameset foi dividido em duas partes, uma com 20% do tamanho e outra com 80% do tamanho. A primeira parte do frameset foi novamente dividida em duas novas partes através da definição de um novo frameset. Veja o exemplo anterior.
O elemento para definição do conteúdo de cada frame é o <frame>. Este comando pode conter os seguintes atributos: src (endereço do conteúdo do frame), framborder (pode ter valor 0 ou 1), noresize (se aparecer na definição o tamanho da janela do frame não pode ser alterado), scrolling (pode conter valores auto, yes, no; este atributo especifica se o conteúdo do frame pode ser rolado ou não), marginwidth, marginheight).