6. Múltiplas Janelas (Frames)


É possível dividir uma página em múltiplas janelas (frames). Mas atenção por que somente os browsers mais recentes (como o Netscape Navigator, a partir da versão 2.0) são capazes de lidar com este recurso. É recomendável que você crie sempre uma opção de navegação para quem estiver usando um browser que não entende frames. O marcador:

<frameset rows="altura das faixas"|cols="largura das colunas" frameborder=yes|no border=n></frameset>

define uma divisão do documento em faixas ou colunas. Estas faixas ou colunas é que irão conter as janelas. O atributo rows recebe como valor uma lista de valores separados por vírgula. Estes valores definirão a altura das faixas e podem ser expressos em pixels, valores percentuais ou ainda valores relativos usando o caractere "*" que significa todo o espaço restante. Por exemplo, rows=100,20%,* define três faixas, a primeira com altura de 100 pixels, a segunda com altura ocupando 20% da janela do browser e a terceira ocupando o espaço restante. É possível especificar a altura de várias faixas com valores relativos. Neste caso o espaço disponível será dividido equitativamente para cada * definido. Por exemplo, rows=20,2*,* define três faixas, a primeira com altura de 20 pixels, a segunda e a terceira ocupando o espaço restante, sendo que a segunda faixa terá o dobro da altura da terceira faixa. O atributo cols recebe como valor uma lista de valores separados por vírgula, que definirão a largura das colunas e podem ser expressos em pixels, valores percentuais ou ainda valores relativos usando o caractere "*", da mesma forma que no atributo rows.

O atributo frameborder define a existência ou não de uma sombra e de uma borda em torno da janela selecionada, e o atributo border define a largura, em pixels, da borda. Dentro de um frameset só podem ser colocados os marcadores frame e noframes, que abordaremos a seguir. Para definir o documento que aparecerá dentro de uma janela criada pelo marcado frameset usa-se o marcador:

<frame src=URL name=string marginwidth=n marginheight=n scrolling=yes|no|auto noresize>

O documento exibido dentro da janela é definido pelo atributo src. O atributo name define um nome para a janela que pode ser usado junto com o atributo target dos marcadores a, area, base e form. Aqui cabe um explicação mais detalhada sobre o atributo target. Ele deve assumir a nome de uma janela, nome esse especificado no marcador frames. No entanto existem quatro valores especiais para este atributo:

_self A própria janela que contém o link
_top A janela do browser. Neste caso a estrutura de frames é destruída
_parent O frameset da janela que contém o link. Neste caso apenas a estrutura do frameset é destruída
_blank O browser criará uma nova janela para exibir o documento referenciado

Podemos definir a distância entre o conteúdo da janela e as margens esquerda e direita com o atributo marginwidth e a distância entre o conteúdo da janela e as margens superior e inferior com o atributo marginheight. O atributo scrolling define a existência ou não de barras de rolagem vertical e horizontal e pode assumir os valores yes (exibir sempre as barras de rolagem), no (nunca exibir as barras de rolagem) ou auto (só exibir as barras de rolagem se o conteúdo do documento exceder as dimensões da janela). O atributo noresize serve para indicar que as dimensões do frame não podem ser redefinidas pelo usuário.

Como alguns browsers não entendem frames é interessante definir um texto alternativo que será exibido neste caso. Para isso usa-se o marcador:

<noframes></noframes>

O texto delimitado por este marcador será exibido caso o browser não seja capaz de entender frames. Eis um exemplo de frames:






O código usado para criar os frames vistos anteriormente foi:

    <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
    <html> <head>
    <title>Exemplo de Frames</title>
    </head>
    
    <frameset cols=100,* border=10>
        <noframes>
            Infelizmente seu browser não entende frames !
        </noframes>
        <frame src=tutorial.htm name=titulo scrolling=yes noresize>
        <frameset rows=40%,*>
            <frame src=intro.htm marginwidth=40 marginheight=35>
            <frameset cols=2*,* frameborder=no>
                <frame src=marks.htm scrolling=no>
                <frame src=forms.htm scrolling=auto>
            </frameset>
        </frameset>
    </frameset>

    </html>

Note que o body do documento foi substituído pelo frameset.