Frames
[Construindo
Frames com o Elemento FRAMESET] [Os
Atributos de FRAMESET]
[COLS
(COLS="valor, valor,valor..")] [Frameborder
(FRAMEBORDER="yes"|"no")]
[BORDER
(BORDER="valor")] [BORDERCOLOR
(BORDERCOLOR=nome-cor | RGB)]
[Definindo
as páginas com elemento FRAME] [Atributos
para FRAME]
[Os
navegadores que não suportam frames e o elemento NOFRAMES]
[Definindo
a janela Alvo através do Atributo TARGET]
Os documentos que possuem frames são
bonitos e atrativos, por serem diferentes do padrão simples de páginas
encontradas na Web. Eles possibilitam dividir um hipertexto em múltiplas
janelas (os frames), nas quais podem ser carregados diferentes documentos
HTML.
A especificação de frames
em HTML 3.2 ainda está em andamento e nem todos os navegadores oferecem
suporte a eles. O Netscape foi o primeiro a implementar essa facilidade
(a partir da versão 2.0) e a sintaxe usada nesta página está
baseada na implementação feita por ele. A figura 13.1 mostra
um exemplo.
Cada uma dessas janelas equivale
a um documento HTML diferente. Assim, para construir essa página,
foram necessários cinco arquivos html: um para cada janela e mais
um para o documento inicial (conhecido como Frame Document), que
define a estrutura da página.
Frames são gerados através
de dois componentes básicos: o elemento FRAMESET, responsável
pela divisão do documento em campos separados, e o elemento FRAME,
que indica as páginas que devem ser carregadas em cada uma dessas
subdivisões.
Figura 13.1 Exemplo
do uso de frames
O documento que implementa frames,
em que se define a estrutura das janelas, é conhecido como Frame
Document. É nele que se estabelece o número de janelas desejado
e a sua distribuição na tela. Dentro de um Frame Document,
as marcações <BODY> e </BODY> são
substituídas por <FRAMESET> e </FRAMESET>.
Construindo
Frames com o Elemento FRAMESET
Como já
foi dito anteriormente, a container tag <FRAMESET> particiona
um documento em diversas regiões. Para tal, ele faz uso dos atributos
COLS e ROWS, referentes a divisões verticais (como
colunas em uma tabela) e horizontais (como linhas) entre as janelas na
tela. Os atributos FRAMEBORDER, BORDER e BORDERCOLOR também
podem ser utilizados, para modificar o layout dos frames.
É importante observar que dentro
de um FRAMESET não se pode utilizar nenhum outro dos elementos
válidos no corpo de um texto HTML comum.
Os
Atributos de FRAMESET
ROWS
(ROWS="valor, valor, valor...") Define divisões horizontais
entre janelas. Vem sempre acompanhados de valores que definem qual o espaço
da tela que vai ser ocupado por cada janela. Cada janela a ser criada deverá
ter, portanto, um valor associado, e esses valores devem estar separados
por vírgula.
Cada valor poderá ser:
Numérico - pixels
(ROWS="30,50") |
Referindo-se a quantos pixels
cada frame (ou janela) deve ocupar. A desvantagem dessa notação
é que não é possivel ter controle do valor total de
pixels que o navegador do usuário contém. |
Percentual
(ROWS="25%,25%,50%") |
Correspondendo a um valor
precentual do tamanho da página, sempre somando um total de 100%.
Esse é o método mais simples. |
Relativo
(ROWS="*,*,2*") |
Definindo o tamanho de uma
janela em relação às outras. No exemplo, os dois primeiros
frames vão ocupar um quarto da tela, e o terceiro frame ocupará
dois quartos, ou seja, metade da tela. Esse exemplo produz o mesmo resultado
que o anterior. |
No
último caso citado, o " * " funciona como uma variável: somando-se
os valores de cada um dos campos em que se vai dividir a tela, deve-se
obter 1 (um!). No exemplo anterior, ter-se-ia: * + * + 2* = 1 > * = 1/4.
Por isso, as primeiras janelas
ocupam um quarto da tela (*) e a terceira janela ocupa um meio (2*).
É possível
combinar os valores numéricos, precentuais e relativos, como demonstram
os exemplos a seguir.
-
Para dividir a
tela do browser em três janelas horizontais (ver figura 13.2), com
a do meio mais larga que as de cima e de baixo.
<HTML>
<HEAD>
<TITLE> Frame Document </TITLE>
</HEAD>
<FRAMESET ROWS="30%, 40%, 30%">
<FRAME SRC="exemplo1.html">
<FRAME SCR="exemplo2.html">
<FRAME SCR="exemplo3.html">
</FRAMESET>
</HTML>
Figura 13.2 Divisão
horizontal da jenela do browser usando percentagem
-
Três janelas
horizontais (ver Figura 13.3): a primeira e a última com altura
fixa, e o frame central ocupando o restante do espaço (é
o próprio navegador que define qual o tamanho do frame central,
de acordo com o espaço que sobra na tela após a definição
do primeiro e do último frames).
<HTML>
<HEAD>
<TITLE> Frame Document </TITLE>
</HEAD>
<FRAMESET ROWS="35, *, 40">
<FRAME SCR="exemplo1.html">
<FRAME SRC="exemplo2.html">
<FRAME SCR="exemplo3.html">
</FRAMESET>
</HTML>
Figura 13.3 Divisão
horizontal - Usando pixels
O tamanho da janela FRAME
2, que está destacada, foi definido pelo próprio navegador
Na definição
do Frame Document anterior, cada janela (frame) corresponde a um elemento
FRAME que indica, o mínimo, a URL que será associada
a essa região da tela. O elemento FRAME e seus atributos
serão descritos em breve.
COLS
(COLS="valor,valor,valor..")
Funciona exatamente
como a marcação anterior (inclusive no que diz respeito ao
modo de apresentação do campo "valor"), no entanto, divide
a tela em frames ou janelas verticais (assim como as colunas em tabelas
), como mostram os exemplos a seguir.
-
Divide a tela em 3
colunas, sendo que a do meio é mais larga qua as outras duas (ver
Figura 13.4):
<HTML>
<HEAD>
<TITLE> Frame Document </TITLE>
</HEAD>
<FRAMESET COLS="30%, 40% ,30%">
<FRAME SRC="exemplo1.html">
<FRAME SRC="exemplo2.html">
<FRAME SRC="exemplo3.html">
</FRAMESET>
</HTML>
Figura 13.4 Divisão
vertical da janela do browser usando percentagem
-
Divide a tela em duas
verticais (ver figura 13.5):
<HTML>
<HEAD>
<TITLE> Frame Document </TITLE>
</HEAD>
<FRAMESET COLS="200,*">
<FRAME SRC="exemplo1.html">
<FRAME SRC="exemplo2.html">
</FRAMESET>
</HTML>
Figura 13.5 divisão
vertical - usando pixels
Da mesma maneira
que nos exemplo das linhas (ROWS), o navegador irá definir
sozinho qual o tamanho da segunda célula.
Para intercalar
janelas verticais e horizontais, é necessário definir várias
áreas FRAMESET. Para cada área delimitada com FRAMESET,
pode-se definir o número de linhas ou colunas. Não é
possível definir COLS e ROWS para uma mesma área
FRAMESET.
Para intercalar
linhas e colunas, pode-se fazer como exemplo a seguir (ver figura 13.6).
<HTML>
<HEAD>
<TITLE> Frame Document </TITLE>
</HEAD>
<!-- O tag HTML abaixo divide a tela em duas linhas -->
<FRAMESET ROWS="30%,70%">
<FRAME SRC="exemplo1.html">
<!-- A linha de código abaixo divide a
segunda linha em duas colunas -->
<FRAMESET COLS="50%,50%">
<FRAME SRC="exemplo2.html">
<FRAME SRC="exemplo3.html">
</FRAMESET>
</FRAMESET>
</HTML>
Figura 13.6 Divisão
horizontal e vertical da janela do browser
Frameborder
(FRAMEBORDER="yes"|"no")
Especifica se
os frames do FRAMESET devem apresentar uma borda ou não.
Se ele for omitido, será usado o valor ("yes" ou "no") do FRAMESET
mais externo. Se nenhum FRAMESET apresentar esse atributo, então
o valor padrão (com bordas) será usado.
<FRAMEBORDER="no">
BORDER
(BORDER="valor")
Especifica a largura
da borda que os frames desse FRAMESET devem apresentar. BORDER=0
equivale a definir FRAMESET="no". O exemplo a seguir define bordas
com espessura de 10 pixels.
<BORDER="10">
BORDERCOLOR
(BORDERCOLOR=nome-cor|RGB)
Especifica a
cor da borda que os frames desse FRAMESET devem apresentar. Para
isso, pode-se usar tanto o nemo da uma cor (nome-cor) quanto o padrão
RGB.
<BORDERCOLOR=blue>
Definindo
as páginas com elemento FRAME
A container tag
<FRAME> define que páginas HTML será carregada em cada
janela contida em uma área FRAMESET. Ela aceita seis possíveis
atributos,cuja utilização depende das necessidades do criador
da página (Frame Document).
Atributos
para FRAME
SRC
(SRC="url")
O atributo SRC
define a URL que será exibida em cada frame. Ele pode ser omitido
caso se deseje criar uma região em branco na tela.
<FRAME SRC="indice.html">
NAME
(NAME="nome")
Esse atributo
é utilizado para associar um nome a uma das divisões do Frame
Document. Deve ser usado quando se deseja especificar onde (em que janela)
documentos devem ser carregados. É um atributo opcional. Por padrão,
os frames não têm nome, mas, quando acontece de se estabelecerem
nomes para janelas, estes devem começar com caractere alfanumérico.
<FRAME SRC="inicial.html"
NAME="navega">
MARGINWIDTH
(MARGINWIDTH="valor")
Esse atributo
controla as margens esquerda e direita de cada frame, ou seja, a distância
entre o conteúdo da página e as margens da janela. O valor
associado será em valor absoluto em pixels. O menor valor aceito
é 1. É um atributo opcional. Caso não esteja definido,
o navegador usará o seu padrão para defenir as margens dos
frames ou janelas.
<FRAME SRC="indice.html"
MARGINWIDTH="3">
MARGINHEIGHT
(MARGINHEIGHT="valor")
Também
é um atributo opcional. Funciona exatamente como o anterior, só
que determina as margens superior/inferior de cada frame.
<FRAME SRC="indice.html"
MARGINHEIGHT="4">
SCROLLING
(SCROLLING="yes/no/auto")
Novamente, é
um atributo opcional, que define se uma janela deve possuir barra de rolagem
ou não. Caso seja definido como YES, a jenela sempre possuirá
uma barra de rolagem visível. Caso sejadefinido como NO,
nunca haverá barra de rolagem. E, finalmente, se vier como AUTO,
o navegador aplicará a barra quando necessário.
O valor padrão é AUTO,
portanto, se o atributo SCROLLING não for definido, o navegador
aplicará a barra de rolagem à janela em questão, automaticamente,
toda vez que o conteudo da página HTML não couber completamente
no frame.
<FRAME SRC="indice.html"
SCRLLING="yes">
NORESIZE
NORESIZE
é também opcional. Esse atributo não possui valor
associado; quando ele não aparece, o usuário poderá
alterar o tamanho da janela, arrastando a sua borda com mouse. Caso contrário,
a janela terá sempre um tamanho inalteravem.
Normalmente, todas as janelas podem
ter seu tamanho alterado, já que o navegadores diferentes estarão
sendo utilizados por diferentes pessoas, e as páginas podem não
caber na tela, impedindo que os usuários possam lê-las.
<FRAME SRC="indice.html"
NORESIZE>
FRAMEBORDER
(FRAMEBORDER="yes"|"no")
ESpecifica se
o frame apresentará uma borda ou não. Se o frame em questão
não tiver esse atributo, será usado o valor definido pelo
FRAMESET. Se o frame apresentar esse atributo, seu valor irá
sobrepor qualquer outro valor que tiver sido definido no FRAMESET
correspondente.
<FRAMEBORDER="no">
Uma
borda só será desativada se todos os frame que a compartilham
tiverem FRAMEBORDER="no". |
Aqui está
um exemplo de elemento FRAME acompanhado de alguns atributos:
<FRAME
SRC="indice.html" NAME="indice" MARGINWIDTH="3" MARGINHEIGHT="4" SCROLLING="yes"
NORESIZE>
Os
Navegadores que não suportam frames e o elemento NOFRAMES
Se existem navegadores
que não surpotam ou não entendem frames, o que fazer para
viabilizar Frame Documents que possam ser navegados por eles?
É justamente aí que
entra a container tag <NOFRAMES>. Ela possibilita que se crie
uma opção de navegação na página para
quem não possui um browser que entenda frames. Isso é bastante
recomendável! Essa marcação aparece no documento inicial
Frame Document.
Quando o acesse for feito através
de um navegador que não entenda frames, os elementos FRAMESET
e FRAMe (e NOFRAMES também!) serão ignorados
pelo navegador, e as marcaçãoes entre <NOFRAME>
e </NOFRAME> serão obedecidas, montando-se uma página
alternativa. Os navegadores que suportam frames ignoram todo conteudo entre
as marcações NOFRAMES. Veja o exemplo a seguir:
<HTML>
<HEAD>
<TITLE> Noframes </TITLE>
</HEAD>
<FRAMESET ROWS="30%,70%">
<FRAME SRC="exemplo1.htm">
<FRAMESET COLS="50%,50%">
<FRAME SRC="exemplo2.htm">
<FRAME SRC="exemplo3.htm">
</FRAMESET>
</FRAMESET>
<!-- Esse é o campo que o navegador que aceita frames, ignora -->
<NOFRAMES>
<BODY>
<FONT SIZE=3>
O documento original possui caracteristicas que não são suportadas
por seu browser ( FRAMES - Suportadas apenas pelo NetScape 2.0 ou superior )
</FONT>
</BODY>
</NOFRAMES>
</HTML>
O
navegador Netscape ignora o conteúdo entre <NOFRAMES>
e </NOFRAMES>; já um navegador que não reconhece
frames ignora os elementos FRAMESET, FRAME
e NOFRAMES, considerando assim os elementos do corpo do documento
(BODY). |
Observando
o exemplo anterior a partir de navegadores que suportam (Figura 13.7) e
que não suportam FRAMES (Figura 13.8):
Figura
13.7 Navegador que suporta FRAMES
Figura
13.8 Navegador que não suporta FRAMES
A versão
1.1 do Netscape também não suporta FRAMES e o HotJava 1.0
(beta) já as suporta. O Internet
Explore introduziu frames na
versão 3.0 Beta 1.
|
Definindo
a janela Alvo através do Atributo Target
O atributo TARGET
permite que se controle em qual janela um link específico será
exibido quando o usuário clicar sober ele. Por exemplo, pode-se
ter uma janela lateral com uma espécie de índice, em que
vários links estarão disponíveis, e uma janela, em
que serão carregados os documentos referentes a esses links. Para
projetar um documento com essas características, é preciso
que o atributo TARGET seja utilizado, pois ele é responsável
por indicar em que lugar um determinado documento deve ser visualizado.
É aqui que entra a necessidade
de se adicionar o atributo NAME ao elemento FRAME, pois é
a partir dele que o elemento TARGET saberá em qual janela
da tela deve ser exibido o documento. Proceda como exemplificado a seguir:
-
Atribuir um NAME
a cada FRAME presente no Frame Document
(NAME="valor").
-
No documento em que
será criado um link que vai aparecer em outra janela, acrescentar
a marcação TARGET="valor à âncora:
<A HREF="URL" TARGET="valor">
Esse valor deve ser
idêntico àquele associado á marcação
NAME no Frame Document.
Na Tabela 13.1 é apresentado
um documento com duas janelas, sendo que uma delas representa um índice
para documentos interessantes e a outra representa o local onde serão
carregadas as páginas que forem escolhidas pelo usuário na
janela adjacente. O exemplo mostra o código para gerar tal documento
e o seu resultado no navegador (Figura 13.9).
Tabela 13.1
Exemplo de Código para gerar Documentos com Frame
O
Frame Document deverá ser escrito
assim: |
O
documento que contém o índice de navegação
(index.html)
será assim: |
<HTML>
<HEAD>
<TITLE> TITULO </TITLE>
</HEAD>
<FRAMESET COLS="40%,60%">
<FRAME NAME="navega"
SRC="inicial.html">
<FRAME SRC="index.html">
</FRAMESET>
<NOFRAMES>
<BODY>
Este documento é melhor visualizado
através de um browser que suporte
frames.
</BODY>
</NOFRAMES>
</HTML> |
<HTML>
<HEAD>
<TITLE> TITULO </TITLE>
</HEAD>
<BODY>
<A HREF="pagina.html" TARGET="navega">
Uma página interessante...
</A>
<BR>
<BR>
<A HREF="pagina2.html"
TARGET="navega">
Mais uma página interessante...
</A>
<BR>
<BR>
<A HREF="pagina3.html"
TARGET="navega">
Uma outra página interessante...
</A>
</BODY>
</HTML> |