Nota: Este documento es parte de una traducci�n al castellano de la Recomendaci�n del W3C "HTML 4.01 Specification" (m�s informaci�n). Puede consultar la versi�n original del mismo. Para cualquier comentario o correcci�n acerca de la traducci�n p�ngase en contacto con el traductor en jrpozo arroba conclase punto net. Gracias por su colaboraci�n.
V�ase el Aviso de copyright de la traducci�n.
Contenidos
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>
Esto podr�a crear una disposici�n de marcos como la siguiente:
--------------------------------------- | | | | | | | Marco 1 | | | | | | | | |---------| | | | Marco 3 | | | | | | | | | | | Marco 2 | | | | | | | | | | | | | | ---------------------------------------
Si el agente de usuario no puede mostrar marcos o est� configurado para no mostrarlos, representar� los contenidos del elemento NOFRAMES.
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.
<![ %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 -- > ]]>
Definiciones de atributos
Atributos definidos en otros lugares
El elemento FRAMESET especifica la organizaci�n de la ventana principal del usuario en t�rminos de subespacios rectangulares.
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.
Los marcos se crean de izquierda a derecha para las columnas y de arriba a abajo para las filas. Cuando se especifican ambos atributos, las vistas se crean de izquierda a derecha en la fila superior, de izquierda a derecha en la segunda fila, etc.
En este primer ejemplo dividimos la pantalla verticalmente en dos (es decir, creamos una mitad superior y una mitad inferior).
<FRAMESET rows="50%, 50%"> ...el resto de la definici�n... </FRAMESET>
El siguiente ejemplo crea tres columnas: la segunda tiene una anchura fija de 250 p�xeles (lo cual es �til, por ejemplo, para incluir una imagen de tama�o conocido). La primera recibe el 25% del espacio restante, y la tercera el 75% del espacio restante.
<FRAMESET cols="1*,250,3*"> ...el resto de la definici�n... </FRAMESET>
El siguiente ejemplo crea una cuadr�cula de 2x3 subespacios.
<FRAMESET rows="30%,70%" cols="33%,34%,33%"> ...el resto de la definici�n... </FRAMESET>
Para el siguiente ejemplo, supongamos que la ventana del navegador tiene actualmente una altura de 1000 p�xeles. Para la primera vista se asigna el 30% de la altura total (300 p�xeles). Para la segunda vista se especifica que tenga una altura de exactamente 400 p�xeles. Esto deja 300 p�xeles para repartir entre los otros dos marcos. La altura del cuarto marco se ha especificado como "2*", de modo que es el doble de alto que el tercer marco, cuya altura es s�lo "*" (equivalente a 1*). Por tanto el tercer marco ser� de 100 p�xeles de alto y el cuarto tendr� una altura de 200 p�xeles..
<FRAMESET rows="30%,400,*,2*"> ...el resto de la definici�n... </FRAMESET>
Las longitudes absolutas que no sumen el 100% del espacio real disponible deber�an ser ajustadas por los agentes de usuario. Cuando sobre espacio, el espacio sobrante deber�a repartirse proporcionalmente entre cada vista. Cuando falte espacio, deber�a reducirse cada vista en funci�n de la relaci�n entre el espacio especificado y el espacio total.
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>
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>
<![ %HTML.Frameset; [ <!-- los nombres de marcos reservados comienzan con "_", los dem�s con una letra --> <!ELEMENT FRAME - O EMPTY -- subventana --> <!ATTLIST FRAME %coreattrs; -- id, class, style, title -- longdesc %URI; #IMPLIED -- v�nculo a descripci�n larga (complementa al t�tulo) -- name CDATA #IMPLIED -- nombre destino del marco -- src %URI; #IMPLIED -- origen del contenido del marco -- frameborder (1|0) 1 -- �poner bordes al marco? -- marginwidth %Pixels; #IMPLIED -- anchuras de los m�rgenes en p�xeles -- marginheight %Pixels; #IMPLIED -- alturas de los m�rgenes en p�xeles -- noresize (noresize) #IMPLIED -- �permitir a los usuarios redimensionar los marcos? -- scrolling (yes|no|auto) auto -- barra de desplazamiento o no -- > ]]>
Definiciones de atributos
Atributos definidos en otros lugares
El elemento FRAME define los contenidos y la apariencia de un marco dado.
El atributo src especifica el documento inicial que contendr� el marco.
El siguiente ejemplo 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 con marcos</TITLE> </HEAD> <FRAMESET cols="33%,33%,33%"> <FRAMESET rows="*,200"> <FRAME src="contenidos_del_marco1.html"> <FRAME src="contenidos_del_marco2.gif"> </FRAMESET> <FRAME src="contenidos_del_marco3.html"> <FRAME src="contenidos_del_marco4.html"> </FRAMESET> </HTML>
deber�a crear una distribuci�n de marcos parecida a �sta:
------------------------------------------ |Marco 1 |Marco 3 |Marco 4 | | | | | | | | | | | | | | | | | | | | | | | | | | | | | -------------| | | |Marco 2 | | | | | | | | | | | ------------------------------------------
y hacer que el agente de usuario cargara cada fichero en una vista separada.
Los contenidos de un marco no deben estar en el mismo documento que la definici�n del marco.
EJEMPLO ILEGAL:
La siguiente definici�n de un grupo de marcos no es legal seg�n HTML, ya que los
contenidos del segundo marco est�n en el mismo documento que la definici�n
del grupo de marcos.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd"> <HTML> <HEAD> <TITLE>Un documento con marcos</TITLE> </HEAD> <FRAMESET cols="50%,50%"> <FRAME src="contenidos_del_marco1.html"> <FRAME src="#vinculo_al_mismo_documento"> <NOFRAMES> ...texto... <H2><A name="vinculo_al_mismo_documento">Secci�n importante</A></H2> ...texto... </NOFRAMES> </FRAMESET> </HTML>
El siguiente ejemplo ilustra el uso de los atributos decorativos de FRAME. Especificamos que el marco 1 no permitir� barras de desplazamiento. El marco 2 dejar� espacio en blanco alrededor de sus contenidos (inicialmente, un fichero de imagen) y el marco no ser� redimensionable. No se dibujar� ning�n borde entre los marcos 3 y 4. Se dibujar�n los bordes (por defecto) entre los marcos 1, 2 y 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 marcos</TITLE> </HEAD> <FRAMESET cols="33%,33%,33%"> <FRAMESET rows="*,200"> <FRAME src="contenidos_del_marco1.html" scrolling="no"> <FRAME src="contenidos_del_marco2.gif" marginwidth="10" marginheight="15" noresize> </FRAMESET> <FRAME src="contenidos_del_marco3.html" frameborder="0"> <FRAME src="contenidos_del_marco4.html" frameborder="0"> </FRAMESET> </HTML>
Nota. Para informaci�n sobre las pr�cticas actuales referentes a la determinaci�n del marco destino, consulte las notas sobre marcos del ap�ndice.
Definiciones de atributos
Consulte la secci�n sobre nombres de marcos destino para informaci�n sobre nombres de marcos reconocidos.
Este ejemplo ilustra c�mo es posible mediante la especificaci�n de un destino la modificaci�n din�mica de los contenidos de un marco. Primero definimos un grupo de marcos en el documento frameset.html, mostrado a continuaci�n:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd"> <HTML> <HEAD> <TITLE>Un documento con marcos</TITLE> </HEAD> <FRAMESET rows="50%,50%"> <FRAME name="fijo" src="inicial_fijo.html"> <FRAME name="dinamico" src="inicial_dinamico.html"> </FRAMESET> </HTML>
Despu�s, en inicial_dinamico.html, hacemos un v�nculo al marco llamado "dinamico".
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <HTML> <HEAD> <TITLE>Un documento con v�nculos con destinos espec�ficos</TITLE> </HEAD> <BODY> ...comienzo del documento... <P>Puede avanzar ahora a la <A href="diapo2.html" target="dinamico">diapositiva 2.</A> ...m�s documento... <P>Lo est� haciendo muy bien. Vaya ahora a la <A href="diapo3.html" target="dinamico">diapositiva 3.</A> </BODY> </HTML>
Si se activa cualquiera de los v�nculos se abre un nuevo documento en el marco llamado "dinamico", mientras que el otro marco, "fijo", mantiene sus contenidos iniciales.
Actualmente no hay ninguna manera de codificar con un URI el estado real de un grupo de marcos. Por tanto, muchos agentes de usuario no permiten a los usuarios asignar un marcador a un grupo de marcos.
Cuando muchos v�nculos del mismo documento designan al mismo destino, es posible especificar el destino una sola vez para que no sea necesario incluir el atributo target en todos los elementos. Esto se hace estableciendo el atributo target del elemento BASE.
Volvemos al ejemplo anterior, esta vez definiendo la informaci�n sobre el destino en el elemento BASE para quitarla de los 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 un destino espec�fico en BASE</TITLE> <BASE href="http://www.micom.com/Diapos" target="dinamico"> </HEAD> <BODY> ...comienzo del documento... <P>Puede avanzar ahora a la <A href="diapo2.html">diapositiva 2.</A> ...m�s documento... <P>Lo est� haciendo muy bien. Vaya ahora a la <A href="diapo3.html">diapositiva 3.</A> </BODY> </HTML>
Los agentes de usuario deber�an determinar el marco destino en el que cargar un recurso vinculado de acuerdo con las siguientes reglas de precedencia (ordenadas de mayor a menor prioridad):
Los agentes de usuario pueden proporcionar a los usuarios un mecanismo para deshabilitar el atributo target.
Los autores deber�an proporcionar contenido alternativo para aquellos agentes de usuario que no soporten marcos o que est�n configurados para no mostrar marcos.
<![ %HTML.Frameset; [ <!ENTITY % noframes.content "(BODY) -(NOFRAMES)"> ]]> <!ENTITY % noframes.content "(%flow;)*"> <!ELEMENT NOFRAMES - - %noframes.content; -- contenedor de contenido alternativo para representaci�n no basada en marcos --> <!ATTLIST NOFRAMES %attrs; -- %coreattrs, %i18n, %events -- >
Atributos definidos en otros lugares
El elemento NOFRAMES especifica un contenido que s�lo deber�an mostrar los agentes de usuario que no soporten marcos o que est�n configurados para no mostrar marcos. Los agentes de usuario que soporten marcos s�lo deben mostrar los contenidos de una declaraci�n NOFRAMES cuando se configuren para no mostrar marcos. Los agentes de usuario que no soporten marcos deben mostrar los contenidos de NOFRAMES en cualquier caso.
El elemento NOFRAMES es parte tanto del DTD transicional como del de documentos con marcos. En un documento que use el DTD de documentos con marcos, NOFRAMES se puede usar al final de la secci�n FRAMESET del documento.
Por ejemplo:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd"> <HTML> <HEAD> <TITLE>Un documento con marcos con NOFRAMES</TITLE> </HEAD> <FRAMESET cols="50%, 50%"> <FRAME src="principal.html"> <FRAME src="tabla_de_contenidos.html"> <NOFRAMES> <P>Aqu� puede encontrar la <A href="principal-sinmarcos.html"> version sin marcos del documento.</A> </NOFRAMES> </FRAMESET> </HTML>
NOFRAMES se puede usar, por ejemplo, en un documento que sea el origen de un marco y que use el DTD transicional. Esto permite a los autores explicar el prop�sito del documento en los casos en que �ste se vea fuera del grupo de marcos o con un agente de usuario que no soporte marcos.
El atributo longdesc permite a los autores hacer los documentos con marcos m�s accesibles a las personas que utilizan agentes de usuario no visuales. Este atributo designa un recurso que proporciona una descripci�n larga del marco. Los autores deber�an recordar que las descripciones largas asociadas con los marcos se refieren al marco, y no a los contenidos del marco. Como los contenidos pueden variar con el tiempo, la descripici�n larga inicial podr�a ser inapropiada para los contenidos posteriores del marco. En particular, los autores no deber�an incluir una imagen como �nico contenido de un marco.
El siguiente documento con marcos describe dos marcos. El marco izquierdo contiene una tabla de contenidos y el marco derecho contiene inicialmente la imagen de un 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 marcos mal dise�ado</TITLE> </HEAD> <FRAMESET cols="20%, 80%"> <FRAME src="tabla_de_contenidos.html"> <FRAME src="avestruz.gif" longdesc="desc-avestruz.html"> </FRAMESET> </HTML>
Obs�rvese que la imagen ha sido incluida en el marco independientemente de cualquier elemento HTML, de modo que el autor no tiene ninguna manera de especificar un texto alternativo aparte de usar el atributo longdesc. Si los contenidos del marco derecho cambian (p.ej., el usuario selecciona una serpiente de cascabel en la tabla de contenidos), los usuarios no tendr�n acceso textual a los nuevos contenidos del marco.
Por tanto, los autores no deber�an poner una imagen en un marco directamente. En su lugar, la imagen deber�a especificarse en un documento HTML independiente, en el cual se podr�a adjuntar el texto alternativo apropiado:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd"> <HTML> <HEAD> <TITLE>Una documento con marcos bien dise�ado</TITLE> </HEAD> <FRAMESET cols="20%, 80%"> <FRAME src="tabla_de_contenidos.html"> <FRAME src="contenedor_avestruz.html"> </FRAMESET> </HTML>
<!-- En contenedor_avestruz.html: --> <HTML> <HEAD> <TITLE>El avestruz, robusto y veloz</TITLE> </HEAD> <P> <OBJECT data="avestruz.gif" type="image/gif"> �Estos avestruces seguro que est�n ricos! </OBJECT> </HTML>
<!ELEMENT IFRAME - - (%flow;)* -- subventana en l�nea --> <!ATTLIST IFRAME %coreattrs; -- id, class, style, title -- longdesc %URI; #IMPLIED -- v�nculo a descripci�n larga (complementa al t�tulo) -- name CDATA #IMPLIED -- nombre destino del marco -- src %URI; #IMPLIED -- origen del contenido del marco -- frameborder (1|0) 1 -- �poner bordes al marco? -- marginwidth %Pixels; #IMPLIED -- anchuras de los m�rgenes en p�xeles -- marginheight %Pixels; #IMPLIED -- alturas de los m�rgenes en p�xeles -- scrolling (yes|no|auto) auto -- barra de desplazamiento o no -- align %IAlign; #IMPLIED -- alineaci�n vertical u horizontal -- height %Length; #IMPLIED -- altura del marco -- width %Length; #IMPLIED -- anchura del marco -- >
Definiciones de atributos
Atributos definidos en otros lugares
El elemento IFRAME permite a los autores insertar un marco dentro de un bloque de texto. Insertar un marco en l�nea dentro de una secci�n de texto es muy similar a insertar un objeto mediante un elemento OBJECT: ambos permiten insertar un documento HTML en medio de otro, ambos pueden alinearse con el texto circundante, etc.
La informaci�n a insertar en l�nea se designa mediante el atributo src de este elemento. Los contenidos del elemento IFRAME, por su parte, s�lo deber�an ser mostrados por los agentes de usuario que no soporten marcos o que est�n configurados para no mostrar marcos.
Para aquellos agentes de usuario que soporten marcos, el siguiente ejemplo colocar� un marco en l�nea rodeado por un borde en medio del texto.
<IFRAME src="blabla.html" width="400" height="500" scrolling="auto" frameborder="1"> [Su agente de usuario no soporta marcos o est� actualmente configurado para no mostrar marcos. Sin embargo, puede visitar <A href="blabla.html">el documento relacionado.</A>] </IFRAME>
Los marcos en l�nea no pueden ser redimensionados (y por lo tanto no tienen un atributo noresize).
Nota. Tambi�n puede incluirse un documento HTML dentro de otro documento HTML por medio del elemento OBJECT. V�ase la secci�n sobre documentos incluidos para m�s detalles.