Los marcos HTML permiten a los autores presentar
documentos con vistas múltiples, que pueden ser
ventanas o subventanas independientes. Las vistas
múltiples ofrecen a los autores una manera de mantener
cierta información visible mientras otras vistas se
desplazan o se sustituyen. Por ejemplo, dentro de una
misma ventana, un marco podría mostrar un gráfico
estático, un segundo marco un menú de navegación, y
un tercero el documento principal que puede ser
desplazado, o reemplazado al navegar por el segundo
marco.
Aquí tenemos un documento simple con marcos:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"
"http://www.w3.org/TR/html4/frameset.dtd"> <HTML> <HEAD> <TITLE>Un
documento simple con marcos</TITLE> </HEAD> <FRAMESET cols="20%,
80%"> <FRAMESET rows="100, 200"> <FRAME
src="contenidos_del_marco1.html"> <FRAME
src="contenidos_del_marco2.gif"> </FRAMESET> <FRAME
src="contenidos_del_marco3.html"> <NOFRAMES> <P>Este conjunto de
marcos contiene: <UL> <LI><A
href="contenidos_del_marco1.html">Contenidos chéveres</A> <LI><IMG
src="contenidos_del_marco2.gif" alt="Una imagen chévere"> <LI><A
href="contenidos_del_marco3.html">Más contenidos chéveres</A> </UL>
</NOFRAMES> </FRAMESET> </HTML>
Disposición de los marcos
Los documentos HTML que describen
una disposición de marcos (llamados
documentos con marcos) tienen una
estructura diferente a la de los
documentos HTML sin marcos. Un
documento normal tiene una sección
HEAD y una sección BODY. Un
documento con marcos tiene una
sección HEAD, y un FRAMESET en lugar
del BODY. La sección FRAMESET de un
documento especifica la disposición de
las vistas en la ventana principal del
agente de usuario. Además, la sección
FRAMESET puede contener un elemento
NOFRAMES que proporcione contenido
alternativo para los agentes de usuario
que no soporten marcos o que estén
configurados para no mostrar marcos.
Los elementos que normalmente
podrían colocarse en el elemento BODY
no deben aparecer antes del primer
elemento FRAMESET o el FRAMESET no
será tenido en cuenta.
El elemento FRAMESET
<![ %HTML.Frameset; [ <!ELEMENT FRAMESET - -
((FRAMESET|FRAME)+ & NOFRAMES?) -- subdivisión en
ventanas --> <!ATTLIST FRAMESET %coreattrs; -- id, class,
style, title -- rows %MultiLengths; #IMPLIED -- lista de
longitudes, por defecto: 100% (1 fila) -- cols
%MultiLengths; #IMPLIED -- lista de longitudes, por
defecto: 100% (1 columna) -- onload %Script; #IMPLIED --
todos los marcos han sido cargados -- onunload %Script;
#IMPLIED -- todos los marcos han sido quitados -- > ]]>
Filas y columnas
Cuando se establece el atributo rows (filas) se define el número de
subespacios horizontales. Cuando se establece el atributo cols
(columnas) se define el número de subespacios verticales. Ambos
atributos se pueden especificar simultáneamente para crear una
cuadrícula. Si no se establece el atributo rows, cada columna se
extiende a lo largo de toda la longitud de la página. Si no se
establece el atributo cols, cada fila se extiende a lo largo de toda la
anchura de la página. Si no se establece ninguno de los dos
atributos, el marco tiene exactamente el mismo tamaño que la
página.
Anidamiento de grupos de marcos
Los grupos de marcos pueden anidarse hasta cualquier nivel. En el siguiente ejemplo, el FRAMESET
exterior divide el espacio disponible en tres columnas iguales. A continuación el FRAMESET interior
divide la segunda área en dos filas de alturas diferentes. <FRAMESET cols="33%, 33%, 34%">
...contenidos del primer marco... <FRAMESET rows="40%, 50%"> ...contenidos del segundo marco,
primera fila... ...contenidos del segundo marco, segunda fila... </FRAMESET> ...contenidos del tercer
marco... </FRAMESET>
Compartir datos entre marcos
Los autores pueden compartir datos entre varios marcos incluyendo
estos datos a través de un elemento OBJECT. Los autores deberían
incluir el elemento OBJECT en el elemento HEAD del documento con
marcos y darle un nombre con el atributo id. Cualquier documento
que sea el contenido de un marco del documento con marcos puede
hacer referencia a este identificador.
El siguiente ejemplo ilustra cómo podría hacer referencia un script a un
elemento OBJECT definido para todo un grupo de marcos: <!DOCTYPE HTML
PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"
"http://www.w3.org/TR/html4/frameset.dtd"> <HTML> <HEAD> <TITLE>Esto
es un documento con marcos con un OBJECT en el HEAD</TITLE> <!-- ¡Este
OBJECT no se representa! --> <OBJECT id="miobjeto"
data="datos.dat"></OBJECT> </HEAD> <FRAMESET> <FRAME
src="blanca.html" name="blanca"> </FRAMESET> </HTML> <!-- En
blanca.html --> <HTML> <HEAD> <TITLE>Página de Blanca</TITLE> </HEAD>
<BODY> ...comienzo del documento... <P> <SCRIPT type="text/javascript">
parent.miobjeto.mipropiedad </SCRIPT> ...el resto del documento... </BODY>
</HTML>