Nota: Este documento es parte de una traduccin al castellano de la Recomendacin del W3C "HTML 4.01 Specification" (ms informacin). Puede consultar la versin original del mismo. Para cualquier comentario o correccin acerca de la traduccin pngase en contacto con el traductor en jrpozo arroba conclase punto net. Gracias por su colaboracin.
Vase el Aviso de copyright de la traduccin.
Contenidos
Los marcos HTML permiten a los autores presentar documentos con vistas mltiples, que pueden ser ventanas o subventanas independientes. Las vistas mltiples ofrecen a los autores una manera de mantener cierta informacin visible mientras otras vistas se desplazan o se sustituyen. Por ejemplo, dentro de una misma ventana, un marco podra mostrar un grfico esttico, un segundo marco un men de navegacin, 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 chveres</A> <LI><IMG src="contenidos_del_marco2.gif" alt="Una imagen chvere"> <LI><A href="contenidos_del_marco3.html">Ms contenidos chveres</A> </UL> </NOFRAMES> </FRAMESET> </HTML>Esto podra crear una disposicin 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 disposicin de marcos (llamados documentos con marcos) tienen una estructura diferente a la de los documentos HTML sin marcos. Un documento normal tiene una seccin HEAD y una seccin BODY. Un documento con marcos tiene una seccin HEAD, y un FRAMESET en lugar del BODY.
La seccin FRAMESET de un documento especifica la disposicin de las vistas en la ventana principal del agente de usuario. Adems, la seccin FRAMESET puede contener un elemento NOFRAMES que proporcione contenido alternativo para los agentes de usuario que no soporten marcos o que estn configurados para no mostrar marcos.
Los elementos que normalmente podran colocarse en el elemento BODY no deben aparecer antes del primer elemento FRAMESET o el FRAMESET no ser tenido en cuenta.
Definiciones de atributos
rows = lista de multilongitudes [CN] Este atributo especifica la disposicin de los marcos horizontales. Es una lista de longitudes en pxeles, porcentajes o longitudes relativas, separadas por comas. El valor por defecto es 100%, que significa una fila. cols = lista de multilongitudes [CN] Este atributo especifica la disposicin de los marcos verticales. Es una lista de longitudes en pxeles, porcentajes o longitudes relativas, separadas por comas. El valor por defecto es 100%, que significa una columna.Atributos definidos en otros lugares
El elemento FRAMESET especifica la organizacin de la ventana principal del usuario en trminos de subespacios rectangulares.
Cuando se establece el atributo rows (filas) se define el nmero de subespacios horizontales. Cuando se establece el atributo cols (columnas) se define el nmero de subespacios verticales. Ambos atributos se pueden especificar simultneamente para crear una cuadrcula.
Si no se establece el atributo rows, cada columna se extiende a lo largo de toda la longitud de la pgina. Si no se establece el atributo cols, cada fila se extiende a lo largo de toda la anchura de la pgina. Si no se establece ninguno de los dos atributos, el marco tiene exactamente el mismo tamao que la pgina.
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 definicin... </FRAMESET>El siguiente ejemplo crea tres columnas: la segunda tiene una anchura fija de 250 pxeles (lo cual es til, por ejemplo, para incluir una imagen de tamao 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 definicin... </FRAMESET>El siguiente ejemplo crea una cuadrcula de 2x3 subespacios.
<FRAMESET rows="30%,70%" cols="33%,34%,33%"> ...el resto de la definicin... </FRAMESET>Para el siguiente ejemplo, supongamos que la ventana del navegador tiene actualmente una altura de 1000 pxeles. Para la primera vista se asigna el 30% de la altura total (300 pxeles). Para la segunda vista se especifica que tenga una altura de exactamente 400 pxeles. Esto deja 300 pxeles 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 slo "*" (equivalente a 1*). Por tanto el tercer marco ser de 100 pxeles de alto y el cuarto tendr una altura de 200 pxeles..
<FRAMESET rows="30%,400,*,2*"> ...el resto de la definicin... </FRAMESET>Las longitudes absolutas que no sumen el 100% del espacio real disponible deberan ser ajustadas por los agentes de usuario. Cuando sobre espacio, el espacio sobrante debera repartirse proporcionalmente entre cada vista. Cuando falte espacio, debera reducirse cada vista en funcin de la relacin 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 continuacin 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 travs de un elemento OBJECT. Los autores deberan 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 cmo podra 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>Pgina de Blanca</TITLE> </HEAD> <BODY> ...comienzo del documento... <P> <SCRIPT type="text/javascript"> parent.miobjeto.mipropiedad </SCRIPT> ...el resto del documento... </BODY> </HTML>Definiciones de atributos
name = cdata [CI] Este atributo asigna un nombre al marco actual. Este nombre puede utilizarse como el destino de vnculos subsiguientes. longdesc = uri [CT] Este atributo especifica un vnculo a una descripcin larga del marco. Esta descripcin debera complementar la descripcin corta proporcionada por el atributo title, y puede ser particularmente til para agentes de usuario no visuales. src = uri [CT] Este atributo especifica la localizacin de los contenidos iniciales que contendr el marco. noresize [CI] Si est presente, este atributo booleano le dice al agente de usuario que la ventana del marco no debe ser redimensionable. scrolling = auto|yes|no [CI] Este atributo especifica informacin sobre el desplazamiento de la ventana del marco. Valores posibles: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>debera crear una distribucin 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 definicin del marco.
EJEMPLO ILEGAL:
La siguiente definicin de un grupo de marcos no es legal segn HTML, ya que los
contenidos del segundo marco estn en el mismo documento que la definicin
del grupo de marcos.
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 ningn borde entre los marcos 3 y 4. Se dibujarn 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 informacin sobre las prcticas actuales referentes a la determinacin del marco destino, consulte las notas sobre marcos del apndice.
Definiciones de atributos
target = marco-destino [CI] Este atributo especifica el nombre de un marco en el que debe abrirse un documento.Consulte la seccin sobre nombres de marcos destino para informacin sobre nombres de marcos reconocidos.
Este ejemplo ilustra cmo es posible mediante la especificacin de un destino la modificacin dinmica de los contenidos de un marco. Primero definimos un grupo de marcos en el documento frameset.html, mostrado a continuacin:
<!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>Despus, en inicial_dinamico.html, hacemos un vnculo 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 vnculos con destinos especficos</TITLE> </HEAD> <BODY> ...comienzo del documento... <P>Puede avanzar ahora a la <A href="diapo2.html" target="dinamico">diapositiva 2.</A> ...ms 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 vnculos 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 vnculos 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 informacin 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 especfico 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> ...ms documento... <P>Lo est haciendo muy bien. Vaya ahora a la <A href="diapo3.html">diapositiva 3.</A> </BODY> </HTML>Los agentes de usuario deberan 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 deberan proporcionar contenido alternativo para aquellos agentes de usuario que no soporten marcos o que estn configurados para no mostrar marcos.
Atributos definidos en otros lugares
El elemento NOFRAMES especifica un contenido que slo deberan mostrar los agentes de usuario que no soporten marcos o que estn configurados para no mostrar marcos. Los agentes de usuario que soporten marcos slo deben mostrar los contenidos de una declaracin 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 seccin 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 propsito 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 ms accesibles a las personas que utilizan agentes de usuario no visuales. Este atributo designa un recurso que proporciona una descripcin larga del marco. Los autores deberan 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 descripicin larga inicial podra ser inapropiada para los contenidos posteriores del marco. En particular, los autores no deberan 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 diseado</TITLE> </HEAD> <FRAMESET cols="20%, 80%"> <FRAME src="tabla_de_contenidos.html"> <FRAME src="avestruz.gif" longdesc="desc-avestruz.html"> </FRAMESET> </HTML>Obsrvese 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 tendrn acceso textual a los nuevos contenidos del marco.
Por tanto, los autores no deberan poner una imagen en un marco directamente. En su lugar, la imagen debera especificarse en un documento HTML independiente, en el cual se podra 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 diseado</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 estn ricos! </OBJECT> </HTML>Definiciones de atributos
longdesc = uri [CT] Este atributo especifica un vnculo a una descripcin larga del marco. Esta descripcin debera servir como complemento de la descripcin corta que proporciona el atributo title, y es particularmente til para los agentes de usuario no visuales. name = cdata [CI] Este atributo asigna un nombre al marco actual. Este nombre puede utilizarse como el destino de vnculos subsiguientes. width = longitud [CN] La anchura del marco en lnea. height = longitud [CN] La altura del marco en lnea.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 lnea dentro de una seccin 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 informacin a insertar en lnea se designa mediante el atributo src de este elemento. Los contenidos del elemento IFRAME, por su parte, slo deberan ser mostrados por los agentes de usuario que no soporten marcos o que estn configurados para no mostrar marcos.
Para aquellos agentes de usuario que soporten marcos, el siguiente ejemplo colocar un marco en lnea 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 lnea no pueden ser redimensionados (y por lo tanto no tienen un atributo noresize).
Nota. Tambin puede incluirse un documento HTML dentro de otro documento HTML por medio del elemento OBJECT. Vase la seccin sobre documentos incluidos para ms detalles.