Índice
As molduras HTML permiten que os autores apresenten documentos en vistas múltiplas, que poden ser xanelas ou subxanelas independentes. As vistas múltiplas oferecen-lles aos deseñadores un modo de manter determinada información visíbel encanto outras vistas se moven ou son substituídas. Por exemplo, dentro da mesma xanela unha moldura poderia mostrar unha faixa estática, unha segunda un menu de navegación e unha terceira o documento principal que pode ser percorrido ou substituído navegando pola segunda moldura.
Velaqui un documento cunha moldura simples:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"
"http://www.w3.org/TR/html4/frameset.dtd">
<HTML>
<HEAD>
<TITLE>Un documento cun grupo de molduras simples</TITLE>
</HEAD>
<FRAMESET cols="20%, 80%">
<FRAMESET rows="100, 200">
<FRAME src="conteúdos_da_moldura1.html">
<FRAME src="conteúdos_da_moldura2.gif">
</FRAMESET>
<FRAME src="conteúdos_da_moldura3.html">
<NOFRAMES>
<P>Este documento cun grupo de molduras contén:
<UL>
<LI><A href="conteúdos_da_moldura1.html">Conteúdos bons</A>
<LI><IMG src="conteúdos_da_moldura2.gif" alt="Unha boa imaxe">
<LI><A href="conteúdos_da_moldura3.html">Outros conteúdos bons</A>
</UL>
</NOFRAMES>
</FRAMESET>
</HTML>
que poderia crear unha disposición de molduras parecida a:
-----------------------------------------Se o axente de usuário non poidese mostrar molduras ou estivese configurado para non facé-lo, mostrará os conteúdos do elemento NOFRAMES .
| | |
| | |
| Moldura 1 | |
| | |
| | |
|-----------| |
| | Moldura 3 |
| | |
| | |
| | |
| Moldura 2 | |
| | |
| | |
| | |
| | |
-----------------------------------------
Un documento HTML que descrebe a disposición das molduras (chamado documento con grupo de molduras ) ten unha codificación diferente do que un documento HTML sen molduras. Un documento padrón ten unha sección HEAD e unha BODY . Un documento con grupo de molduras ten unha HEAD , e un FRAMESET en lugar de BODY .
A sección FRAMESET dun documento especifica a disposición das vistas na xanela principal do axente de usuário. Ademáis, a sección FRAMESET pode conter un elemento NOFRAMES que forneza conteúdo alternativo para os axentes de usuário que non aceiten molduras ou estexan configurados para non mostrar molduras.
Os elementos que normalmente se situarian no elemento BODY non poden aparecer antes do primeiro elemento FRAMESET ou se non o FRAMESET será ignorado.
<![ %HTML.Frameset; [
<!ELEMENT FRAMESET - - ((FRAMESET|FRAME)+ & NOFRAMES?) -- sub-división da xanela -->
<!ATTLIST FRAMESET
%coreattrs; -- id, class, style, title --
rows %MultiLengths; #IMPLIED -- lista de lonxitudes,
por omisión: 100% (1 fila) --
cols %MultiLengths; #IMPLIED -- lista de lonxitudes,
por omisión: 100% (1 coluna) --
onload %Script; #IMPLIED -- carregaron-se todas as molduras --
onunload %Script; #IMPLIED -- eliminaron-se todas as molduras --
>
]]>
Definicións dos atributos
Atributos que se definen noutro sítio
O elemento FRAMESET especifica a disposición da xanela principal do usuário en termos de sub-espazos rectangulares.
Ao asignar o atributo rows define-se o número de sub-espazos horizontais nun grupo de molduras. Ao asignar o atributo cols define-se o número de sub-espazos verticais. Ambos os dous atributos poden-se asignar de maneira simultánea para crear unha grella.
Se non se asignar o atributo rows , cada coluna extende-se todo ao longo da páxina. Se non se asigna o atributo cols , cada fila extende-se todo ao ancho da páxina. Se non se asigna nengun dos dous atributos, a moldura ocupa exactamente o tamaño da páxina.
As molduras crean-se de esquerda a direita nas colunas e de arriba a baixo nas filas. Cando se especificaren ambos os dous atributos, as vistas crean-se de esquerda a direita na fila superior, de esquerda a direita na segunda fila, etc.
O primeiro exemplo divide a pantalla verticalmente en dous (ou sexa, crea unha metade superior e unha metade inferior).
<FRAMESET rows="50%, 50%">
...resto da definición... </FRAMESET>
O seguinte exemplo crea tres colunas: a segunda ten un ancho fixo de 250 pontos ou "píxeis" (útil para, por exemplo, conter unha imaxe dun tamaño coñecido. A primeira recebe o 25% do espazo restante e a terceira o 75% do espazo restante.
<FRAMESET cols="1*,250,3*">
...resto da definición... </FRAMESET>
O seguinte exemplo crean unha grexa 2x3 de sub-espazos.
<FRAMESET rows="30%,70%" cols="33%,34%,33%">
...resto da definición... </FRAMESET>
No seguinte exemplo, supoña-se que a xanela do navegador ten actualmente 1000 pontos de alto. Asigna-se o 30% da altura total (300 pontos) à primeira vista. A segunda vista especifica-se que teña exactamente 400 pontos de alto. Isto deixa 300 pontos a dividir entre as outras duas molduras. A altura da cuarta moldura especifica-se como "2*", asi que é duas veces máis alta que a terceira moldura, cuxa algura é só de "*" (equivalente a 1*). Polo tanto, a terceira moldura terá 100 pontos de alto e a cuarta terá 200 pontos de alto.
<FRAMESET rows="30%,400,*,2*">
...resto da definición... </FRAMESET>
O axente de usuário deberia axustar as lonxitudes absolutas que non sumen o 100% do espazo real disponíbel. Cando non se especifique todo, o espazo restante deberia-se asignar proporcionalmente a cada vista. Cando se especifique de máis, cada vista deberia-se reducir dacordo coa sua proporción especificada do espazo total.
Os grupos de molduras poden-se aniñar en calquer nível.
No exemplo seguinte, o FRAMESET exterior divide o espazo disponíbel en tres colunas iguais. O FRAMESET interior divide entón a segunda área en duas filas de altura desigual.
<FRAMESET cols="33%, 33%, 34%">
...conteúdos da primeira moldura... <FRAMESET rows="40%, 50%"> ...conteúdos da segunda moldura, primeira fila... ...conteúdos da segunda moldura, segunda fila... </FRAMESET> ...conteúdos da terceira moldura... </FRAMESET>
Os autores poden compartillar dados entre várias molduras incluindo estes dados mediante un elemento OBJECT . Os autores deberian incluir o elemento OBJECT no elemento HEAD dun documento de grupo de molduras e dar-lle un nome co atributo id . Calquer documento que sexa o conteúdo dunha moldura no grupo de molduras pode-se referir a este identificador.
O exemplo seguinte ilustra como se pode referir un script a un elemento OBJECT definido para todo un grupo de molduras:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"
"http://www.w3.org/TR/html4/frameset.dtd">
<HTML>
<HEAD>
<TITLE>Este é un grupo de molduras con OBJECT en HEAD</TITLE>
<!-- Este OBJECT non se mostra! -->
<OBJECT id="omeuobxecto" data="dados.bar"></OBJECT>
</HEAD>
<FRAMESET>
<FRAME src="branca.html" name="branca">
</FRAMESET>
</HTML>
<!-- En branca.html -->
<HTML>
<HEAD>
<TITLE>A páxina de Branca</TITLE>
</HEAD>
<BODY>
...comezo do documento... <P> <SCRIPT type="text/javascript"> pai.omeuobxecto.amiñapropriedade </SCRIPT> ...resto do documento... </BODY> </HTML>
<![ %HTML.Frameset; [
<!-- os nomes de molduras reservados comezan con "_" se non, comezan cunha letra -->
<!ELEMENT FRAME - O EMPTY -- sub-xanela -->
<!ATTLIST FRAME
%coreattrs; -- id, class, style, title --
longdesc %URI; #IMPLIED -- vínculo a unha descrición longa
(complementa o título) --
name CDATA #IMPLIED -- nome dunha moldura para os destinos --
src %URI; #IMPLIED -- orixe do conteúdo da moldura --
frameborder (1|0) 1 -- pedir bordes de moldura? --
marginwidth %Pixels; #IMPLIED -- anchos de marxe en pontos --
marginheight %Pixels; #IMPLIED -- alto de marxe en pontos --
noresize (noresize) #IMPLIED -- permitir que os usuários redimensionen as molduras? --
scrolling (yes|no|auto) auto -- barra de desprazamento ou non --
>
]]>
Definicións dos atributos
Atributos que se definen noutro sítio
O elemento FRAME define os conteúdos e aparéncia dunha moldura única.
O atributo src especifica o documento inicial que conterá a moldura.
O seguinte exemplo de documento HTML:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"
"http://www.w3.org/TR/html4/frameset.dtd">
<HTML>
<HEAD>
<TITLE>Un documento cun grupo de molduras</TITLE>
</HEAD>
<FRAMESET cols="33%,33%,33%">
<FRAMESET rows="*,200">
<FRAME src="conteudo_da_moldura1.html">
<FRAME src="conteudo_da_moldura2.gif">
</FRAMESET>
<FRAME src="conteudo_da_moldura3.html">
<FRAME src="conteudo_da_moldura4.html">
</FRAMESET>
</HTML>
deberia crear unha disposición de molduras parecida a isto:
--------------------------------------------
|Moldura 1 |Moldura 3 |Moldura 4 |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
---------------| | |
|Moldura 2 | | |
| | | |
| | | |
--------------------------------------------
e facer que o axente de usuário carregase cada ficheiro nunha vista separada.
Os conteúdos dunha moldura non deben estar no mesmo documento que a definición da moldura.
EXAMPLO
ILEGAL:
A seguinte definición de grupo de molduras non é HTML
legal dado que os conteúdos da segunda moldura están
no mesmo documento que o grupo de molduras.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"
"http://www.w3.org/TR/html4/frameset.dtd">
<HTML>
<HEAD>
<TITLE>Un documento con grupo de molduras</TITLE>
</HEAD>
<FRAMESET cols="50%,50%">
<FRAME src="conteudos_da_moldura1.html">
<FRAME src="#ancora_no_mesmo_documento">
<NOFRAMES>
...texto... <H2><A name="ancora_no_mesmo_documento">Sección importante</A></H2> ...texto... </NOFRAMES> </FRAMESET> </HTML>
O exemplo seguinte ilustra o uso dos atributos decorativos de FRAME . Especificamos que moldura 1 non permitirá barras de deslocamento. Moldura 2 deixará un espazo en branco arredor dos seus conteúdos (inicialmente, un ficheiro de imaxe) e a moldura non se poderá redimensionar. Non se deseñará un borde entre as molduras 3 e 4. Os bordes deseñarán-se (por omisión) entre as molduras 1, 2 e 3.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"
"http://www.w3.org/TR/html4/frameset.dtd">
<HTML>
<HEAD>
<TITLE>Un documento con grupo de molduras</TITLE>
</HEAD>
<FRAMESET cols="33%,33%,33%">
<FRAMESET rows="*,200">
<FRAME src="conteudos_da_moldura1.html" scrolling="no">
<FRAME src="conteudos_da_moldura2.gif"
marginwidth="10" marginheight="15"
noresize>
</FRAMESET>
<FRAME src="conteudos_da_moldura3.html" frameborder="0">
<FRAME src="conteudos_da_moldura4.html" frameborder="0">
</FRAMESET>
</HTML>
Nota. Para información sobre a práctica actual para determinar o destino dunha moldura, consulte as notas sobre molduras no apéndice.
Definicións dos atributos
Consulte a sección sobre nomes de molduras de destino para información sobre nomes de molduras recoñecidos.
Este exemplo ilustra como os destinos permiten a modificación dinámica do conteúdo dunha moldura. Primeiro definimos un grupo de molduras no documento frameset.html que aqui se mostra:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"
"http://www.w3.org/TR/html4/frameset.dtd">
<HTML>
<HEAD>
<TITLE>Un documento con grupo de molduras</TITLE>
</HEAD>
<FRAMESET rows="50%,50%">
<FRAME name="fixa" src="init_fixo.html">
<FRAME name="dinamica" src="init_dinamica.html">
</FRAMESET>
</HTML>
Entón, en init_dinamica.html , vinculamos coa moldura chamada "dinamica".
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<HTML>
<HEAD>
<TITLE>Un documento con áncoras con destinos especificos</TITLE>
</HEAD>
<BODY>
...comezo do documento... <P>Agora pode continuar para <A href="diapositiva2.html" target="dinamica">diapositiva 2.</A> ...máis documento... <P>Está-o a facer moi ben. E agora para <A href="diapositiva3.html" target="dinamica">diapositiva 3.</A> </BODY> </HTML>
Ao activar calquer vínculo abre-se un documento novo na moldura chamada "dinamica" mentres a outra moldura, "fixa", mantén os seus conteúdos iniciais.
Actualmente non hai maneira de codificar o estado inteiro dun grupo de molduras nun URI. Portanto, moitos axentes de usuário non permiten que os usuários lle asignen un marcador a un grupo de molduras.
Cando moitos vínculos do mesmo documento designan o mesmo destino, é posíbel especificar o destino unha vez e evitar o atributo target en cada elemento. Isto fai-se designando o atributo target do elemento BASE .
Retornamos ao exemplo anterior, descompondo esta vez a información do destino definindo-a no elemento BASE e retirando-a dos elementos A .
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<HTML>
<HEAD>
<TITLE>Un documento con BASE cun destino específico</TITLE>
<BASE href="http://www.omeusitio.com/Diapositivas" target="dinamica">
</HEAD>
<BODY>
...comezo do documento... <P>Agora pode continuar para <A href="diapositiva2.html">diapositiva 2.</A> ...máis documento... <P>Está-o a facer moi ben. E agora para <A href="diapositiva3.html">diapositiva 3.</A> </BODY> </HTML>
Os axentes de usuário deberian determinar a moldura de destino na que carregar un recurso vinculado dacordo coas precedéncias seguintes (de maior prioridade a menor):
Os axentes de usuário poden-lles fornecer aos usuários un mecanismo para ignorar o atributo target .
Os autores deberian fornecer conteúdo alternativo para os axentes de usuário que non aceiten molduras ou que estexan configurados para non mostrar molduras.
<![ %HTML.Frameset; [
<!ENTITY % noframes.content "(BODY) -(NOFRAMES)">
]]>
<!ENTITY % noframes.content "(%flow;)*">
<!ELEMENT NOFRAMES - - %noframes.content; -- contentor de conteúdo alternativo para representación non baseada en molduras --> <!ATTLIST NOFRAMES %attrs; -- %coreattrs, %i18n, %events --
>
Atributos que se definen noutro sítio
O elemento NOFRAMES especifica un conteúdo que deberian mostrar só os axentes de usuário que non aceiten molduras ou que estexan configurados para non mostrar molduras. Os axentes de usuário que aceitan molduras só deben mostrar os conteúdos dunha declaración NOFRAMES cando estiveren configurados para non mostrar molduras. Os axentes de usuário que non aceiten molduras deben mostrar en calquer caso os conteúdos de NOFRAMES .
O elemento NOFRAMES é parte de ambas as DTD transicionais e de grupo de molduras . Nun documento que usa a DTD de grupo de molduras, NOFRAMES pode-se usar ao final da sección FRAMESET do documento.
Por exemplo:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"
"http://www.w3.org/TR/html4/frameset.dtd">
<HTML>
<HEAD>
<TITLE>Un documento de grupo de molduras con NOFRAMES</TITLE>
</HEAD>
<FRAMESET cols="50%, 50%">
<FRAME src="principal.html">
<FRAME src="indice.html">
<NOFRAMES>
<P>Velaqui a <A href="principal-senmolduras.html">
versión do documento non baseada en molduras.</A>
</NOFRAMES>
</FRAMESET>
</HTML>
Pode-se usar NOFRAMES , por exemplo, nun documento que é a orixe dunha moldura e que usa a DTD transicional. Isto permite que os autores expliquen o propósito do documento en casos nos que se vé fora do grupo de molduras ou cun axente de usuário que non aceita molduras.
O atributo longdesc permite que os autores fagan os documentos de molduras máis acesíbeis para as persoas que utilicen axentes de usuário non visuais. Este atributo designa un recurso que fornece unha descrición longa da moldura. Os autores deberian ter en conta que as descricións longas asociadas con molduras van xunguidas à moldura, non aos conteúdos da moldura. Dado que os conteúdos poden variar co tempo, a descrición longa inicial seguramente se tornará inapropriada para os conteúdos posteriores da moldura. En concreto, os autores non deberian incluir unha imaxe como conteúdo único dunha moldura.
O documento con grupo de molduras seguinte descrebe duas molduras. A moldura esquerda contén un índice e a moldura direita contén inicialmente unha imaxe dunha avestruz:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"
"http://www.w3.org/TR/html4/frameset.dtd">
<HTML>
<HEAD>
<TITLE>Un documento con grupo de molduras mal deseñado</TITLE>
</HEAD>
<FRAMESET cols="20%, 80%">
<FRAME src="indice.html">
<FRAME src="avestruz.gif" longdesc="avestruz-desc.html">
</FRAMESET>
</HTML>
Observe-se que a imaxe incluiu-se na moldura independentemente de calquer elemento HTML, de xeito que o autor non ten maneira de especificar un texto alternativo máis que co atributo longdesc . Se os conteúdos da moldura direita mudan (p.ex., o usuário selecciona unha serpente cascavel do índice), os usuários non terán aceso textual ao novo conteúdo da moldura.
Asi que os autores non deberian pór unha imaxe directamente nunha moldura. En vez disto, a imaxe haberia que especificá-la nun documento HTML separado, e dentro del anotá-la co texto alternativo apropriado:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"
"http://www.w3.org/TR/html4/frameset.dtd">
<HTML>
<HEAD>
<TITLE>O documento de grupo de molduras ben deseñado</TITLE>
</HEAD>
<FRAMESET cols="20%, 80%">
<FRAME src="indice.html">
<FRAME src="avestruz-contentor.html">
</FRAMESET>
</HTML>
<!-- En avestruz-contentor.html: -->
<HTML>
<HEAD>
<TITLE>A veloz de poderosa avestruz</TITLE>
</HEAD>
<P>
<OBJECT data="avestruz.gif" type="image/gif">
Estas avestruces seguro que saben ben!
</OBJECT>
</HTML>
<!ELEMENT IFRAME - - (%flow;)* -- subxanela na liña -->
<!ATTLIST IFRAME
%coreattrs; -- id, class, style, title --
longdesc %URI; #IMPLIED -- vínculo coa descrición longa
(complementa o título) --
name CDATA #IMPLIED -- nome dunha moldura para os destinos --
src %URI; #IMPLIED -- orixe do conteúdo da moldura --
frameborder (1|0) 1 -- pedir bordes de moldura? --
marginwidth %Pixels; #IMPLIED -- anchos de marxes en pontos --
marginheight %Pixels; #IMPLIED -- altura de marxe en pontos --
scrolling (yes|no|auto) auto -- barra de deslocamento ou non --
align %IAlign; #IMPLIED -- aliñamento vertical ou horizontal --
height %Length; #IMPLIED -- altura da moldura --
width %Length; #IMPLIED -- ancho da moldura --
>
Definicións dos atributos
Atributos que se definen noutro sítio
A información para ser inserida na liña designa-se co atributo src deste elemento. Os conteúdos do elemento IFRAME , pola outra banda, deberian-nos mostrar só os axentes de usuário que non aceitaren molduras ou que estiveren configurados para non mostrar molduras.
Para os axentes de usuário que aceiten molduras, o exemplo seguinte colocará unha moldura na liña rodeada dun borde no meio do texto.
<IFRAME src="calquer.html" width="400" height="500"
scrolling="auto" frameborder="1">
[O seu axente de usuário non aceita molduras ou está actualmente configurado
para non mostrar molduras. Porén, pode visitar
<A href="calquer.html">o documento relacionado.</A>]
</IFRAME>
Non se poden redimensionar as molduras na liña (e, polo tanto, non poden receber o atributo noresize ).
Nota. Os documentos HTML tamén se poden incrustrar noutros documentos HTML mediante o elemento OBJECT . Vexa a sección sobre documentos incrustrados se precisar de máis detalles.