Los marcos, frames en la nomenclatura inglesa, permiten dividir la ventana de un cliente WWW en diferentes secciones, en las que se pueden mostrar, a su vez, documentos HTML. Cada una de estas secciones se comporta como un browser independiente, con funciones de impresión, barras de desplazamiento (en caso de que estas sean necesarias), opciones de recarga, movimiento por el histórico de lugares visitados, etc.
Sólo se pueden utilizar frames en browsers posteriores a Netscape 2.0 e Internet Explorer versión 3. Las opciones disponibles varían mucho con la versión de browser. En lo que sigue se tratará un conjunto mínimo de atributos compatibles.
Navegación en documentos con frames
La visualización de un documento que contiene marcos altera determinados aspectos del comportamiento habitual de los clientes Web, por lo que se deben tener en cuenta los siguientes puntos:
Un documento con frames consta de un único fichero que contiene la descripción de las zonas en las que se divide la pantalla, junto con las URLs de los documentos HTML que se presentarán en cada una de las secciones (recordemos que cada sección se comporta como un browser independiente). Cada región se caracteriza porque:
Un documento con marcos no contiene código HTML (salvo la sección <NOFRAMES>), sino la descripción de cada una de las secciones de la presentación, y la URL del documento que se debe cargar en cada una. Es importante garantizar que el documento de definición de secciones no tenga una etiqueta <BODY>, salvo dentro de <NOFRAMES>.
Cada etiqueta <FRAMESET> define una división de la pantalla, en secciones horizontales o verticales. Dentro de cada <FRAMESET> es posible realizar nuevas particiones, con lo que iterativamente se llegará a la distribución final.
Todo el control de la definición de secciones se realiza a través de los diferentes atributos de las etiquetas <FRAMESET> y <FRAME>. El proceso es sencillo: partiendo de la pantalla completa, se realiza una división, en filas o columnas, con una etiqueta <FRAMESET>. La división siempre debe ser en dos o más elementos.
Dentro de la etiqueta pareada <FRAMESET> se incluye un elemento <FRAME> o <FRAMESET> por cada una de las divisiones realizadas, de forma iterativa, hasta que todas las secciones definidas en un <FRAMESET> tengan su correspondiente <FRAME>:
<FRAMESET>… </FRAMESET> | Define una división de una ventana de un browser (o de una parte de ella) en diferentes secciones. | ||
ROWS=" " | Especifica que la división del documento se realizará por filas. Se debe proporcionar una lista de valores, uno por cada sección, que especifique la forma en que se realiza la división. | ||
COLS=" " | Especifica que la división del documento se realizará por columnas. Se debe proporcionar una lista de valores, uno por sección, que especifiquen la forma en que se realiza la división. | ||
BORDER= | Permite
controlar el grosor de los bordes de todas las secciones dentro de este
conjunto. Se expresa en pixels.
Es específico de Netscape (en su versión 3). |
||
FRAMEBORDER= | Permite
eliminar el borde que separa cada uno de los marcos. Puede tomar los valores
yes,
no.
Es específico del Internet Explorer de Microsoft. |
||
FRAMESPACING= | Permite
modificar el espaciado, en pixels, entre las diferentes secciones.
Es específico del Internet Explorer de Microsoft. |
El primer paso es definir la distribución en filas o columnas que compondrá cada sección. Para ello, se utilizan los atributos ROWS o COLS de <FRAMESET>, a los que se pasa una lista de valores, separados por comas, de los puntos de separación de cada sección. Cada uno de los valores define una división independiente.
La anchura de cada sección se puede especificar de las siguientes formas:
Finalizado el proceso de división, cada una de las particiones creadas debe tener asociada una etiqueta <FRAME>, en la que se fija su configuración. Se tiene control sobre:
La URL por defecto (SRC) que se cargará en el primer acceso al documento de definición de frames.
La forma en que se mostrará en pantalla: presencia de barras de desplazamiento, bloqueo del tamaño de las secciones, …
<FRAME>… </FRAME> | Define los parámetros de una sección individual, dentro de un conjunto <FRAMESET>. | ||
NAME=" " | Nombre
asociado a esta sección, que servirá para hacer referencia
a la misma desde un enlace <A>.
Utilizando el nuevo atributo TARGET="nombre_de_frame" de <A>, se puede mostrar un enlace en la sección deseada. Por defecto, las ventanas no tienen nombre, y no es necesario asignárselo, a no ser que se desee acceder a ella desde un enlace. |
||
SRC=" " | Nombre de la URL que se cargará inicialmente en esta sección. | ||
SCROLLING=" " | Indica
si la ventana tendrá barras de desplazamiento, en caso de que la
información insertada en el marco ocupe más de su tamaño.
Puede valer yes, no, auto. Con el valor auto, estas sólo aparecerán si son necesarias. |
||
NORESIZE | Impide que el usuario pueda cambiar el tamaño de esta sección. | ||
MARGINHEIGHT=" " | Control de la altura del margen (superior e inferior) en pixels. | ||
MARGINWIDTH=" " | Controla la anchura del margen (derecho e izquierdo) en pixels. | ||
FRAMEBORDER=" " | Permite
eliminar el borde que separa cada uno de los marcos.
Es específico del Internet Explorer de Microsoft. |
El caso más sencillo es la división de la pantalla en dos secciones, que en este caso son proporcionales al tamaño total de la pantalla.
Cuando se activa un enlace situado dentro de una sección de un marco, la URL correspondiente se muestra en la misma sección en que estaba ese enlace. Este es el comportamiento normal del sistema de navegación del Web cuando no se utilizan marcos. Es decir, si dentro de una sección de un marco aparece un enlace como:
Para conseguir este efecto, la etiqueta <A> ha sido ampliada con un atributo TARGET="", que especifica el nombre de la sección en que se debe cargar el enlace. Por ejemplo, para el caso habitual de un frame que actúa de índice:
_self àCarga la URL en la misma sección en la que está el enlace. Es equivalente a no utilizar TARGET.
_top àCarga la URL en esta misma ventana, pero eliminando las frames existentes. Se debe utilizar siempre que se quiera eliminar la estructura de marcos, por ejemplo, al activar un enlace que esta fuera de este servicio de información.
_parent àCarga
la URL en el frame del cual forma parte el frame en que está el
enlace.