La etiqueta <frameset>

Lo primero que hay que hacer para iniciar una página de marcos es crear la definición de los mismos. Por lo que hemos visto hasta ahora la organización de páginas puede resultarnos un tanto sorprendente. Hay que tener en cuenta que una definición de marcos no es más que una instrucción para que el navegador sepa cómo tiene que dividir la ventana; en ella no existen contenidos para mostrar. Los contenidos que se mostrarán en cada zona de la pantalla son los que componen cada una de las páginas que se muestran simultáneamente.

Teniendo en cuenta lo anterior empezaremos por decir que no necesitamos las etiquetas de definición habituales: HTML, HEAD y BODY, aunque deberías revisar la anotación de estilo que figura al final de este apartado.

Las etiquetas que nos sirven para contener la definición del marco son <frameset> </frameset>
Internet Explorer presenta la página aunque olvidemos el cierre </frameset>, pero Netscape no

Distribución del espacio en columnas o filas

Lógicamente la mera indicación de que queremos crear una estructura de frames no es suficiente: habrá que indicar si la distribución se hará en vertical o en horizontal y cuantas zonas queremos crear.

La definición de los espacios se puede hacer en términos absolutos (píxeles) o relativos (% de ventana). El signo * representa el resto de la ventana.

A continuación se muestran algunos ejemplos de posibles divisiones de la pantalla.
Dos columnas con una medida absoluta para la primera:
<frameset cols="130,*">
Dos columnas con medidas relativas
<frameset cols="25%,75%*">

Tres filas con medidas absolutas para la superior y la inferior
<frameset rows="25,*,50">
Dos filas con definición relativa
<frameset rows="10%,*">

Contenido de los marcos

Una vez establecida la distribución general habrá que indicar al navegador cuál es el contenido que tendrá que mostrar en cada marco la primera vez que se cargue la página.

Para indicar el contenido de cada marco se utiliza la etiqueta <frame>, que no necesita cierre con los siguientes atributos:

name: Servirá para identificar el marco cuando se realicen enlaces a una página con este tipo de estructura.

src: Indicará cuál es el contenido inicial del marco cuando se cargue por primera vez la página.

frameborder: Indicará si el marco lleva o no lleva borde. Sus valores pueden ser 0 y 1 (Netscape interpreta también como válidos yes y no)

framespacing: Indicará la separación en píxeles entre los marcos

Si queremos garantizar la compatibilidad cuando no deseamos que aparezcan bordes habría que incluir la etiqueta border=0 en la etiqueta frameset, acompañada de frameborder=0 y framespacing=0, ya que Netscape parece no responder correctamente si sólo se utilizan estas dos últimas.

marginwidth y marginheight: Sirven para especificar los márgenes del marco expresados en píxeles.

scrolling: Admite los valores auto, yes y no para indicar si el marco dispondrá de barras de desplazamiento o no.

bordercolor: Permite especificar el color del borde que delimitará el marco (Si se pone color al borde de dos marcos adyacentes tiene prioridad el primero en presentarse, esto es, el de la izquierda en el caso de columnas y el superior en el caso de filas). Cuando hay más de dos marcos Netscape admite diferentes colores de borde, siguiendo la prioridad en la presentación, pero Explorer sólo presenta el primer color definido.

noresize: Hace que el tamaño del marco no pueda ser modificado por el usuario.

Un ejemplo

<frameset cols="195,*" framespacing="10" frameborder="3">
<frame src="indice.htm" name="izquierda" bordercolor="blue" scrolling="no" marginwidth="10" marginheight="10">
<frame src="contenido.htm" name="derecha" scrolling="yes" marginwidth="10" marginheight="10">
</frameset>

 

Lo que se acaba de comentar podría ser suficiente para crear una página basada en marcos, pero lo ideal es crear una página siguiendo el esquema siguiente, en el que se indica la estructura de los marcos pero se ofrece, a través de la etiqueta noframes, una alternativa para el caso de navegadores que no puedan mostrarlos y, además, se incluye un título en la cabecera.

<html>
<head>
<title>Título que se verá de forma constante aunque cambien los marcos</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<frameset cols="80,*" frameborder="no" border="0" framespacing="0">
<frame src="indice.htm" name="izquierda" bordercolor="blue" scrolling="no" noresize marginwidth="10" marginheight="10">
<frame src="contenido.htm" name="derecha" frameborder="0" scrolling="yes" marginwidth="10" marginheight="10">
</frameset>
<noframes>
<body bgcolor="#FFFFFF">
Aquí iría un mensaje indicando que la página está creada con marcos y el navegador no los soporta o, incluso el contenido de una página alternativa para el caso de los navegadores incapaces de mostrar los marcos.
</body>
</noframes>
</html>

  Crea dos páginas para mostrar en una estructura de marcos. Una de ellas deberá contener un posible índice con los títulos de diferentes epígrafes que se irán mostrando en la zona principal. La otra puede ser una página que incluya alguna ilustración y un texto explicativo de los contenidos que se irán abordando. Guárdalas con los nombres indice.htm y contenidos.htm respectivamente.


El marco fantasma

Hay ocasiones, cuando la estructura de la WEB sigue una secuencia lógica y de exposición lineal, en las que la trayectoria que va a seguir la navegación es muy previsible.

En otras ocasiones, hay partes de la WEB que tienen una alta probabilidad de ser visitadas en uno u otro momento, pero presentan la dificultad de incluir imágenes u otros recursos que incrementan su tamaño y hacen que su descarga sea trabajosa.

En ambos casos, la descarga será mucho más rápida la segunda vez que visítemos la página, puesto que en esa ocasión los componentes de la misma no se descargarán directamente de Internet sino que se extraerán de la memoria caché del navegador.

Una buena ayuda, para facilitar la navegación, sería disponer de un recurso que permitiera que esas páginas que se van a visitar estuvieran ya cargadas en la memoria caché del navegador y así se pudiera agilizar la descarga para que el visitante tuviera una sensación de que todo va mucho más rápido.

¿Qué te parece crear una estructura de marcos en uno de los cuales se presentara la página que estamos visitando y en el otro la que vamos a visitar? Seguro que has pensado que no es una idea con mucho sentido, porque ¿qué ocurre si ambas páginas no tienen nada que ver entre sí?.

Vamos verlo de otra manera. Seguro que recuerdas que los marcos se pueden definir a través de porcentajes de la pantalla y que puedes utilizar el signo * para indicar el espacio restante. ¿Qué te parece entonces esta definición: <frameset cols="100%,*">?

Probablemente pensarás que es absurdo adjudicar a una columna el 100% de la ventana y a la otra el resto, puesto que no le hemos dejado nada, pero precisamente ahí está el truco. Si en el marco que ocupa el 100% ponemos la página que el visitante está viendo en este momento y en el otro la que pretendemos precargar, quien está viendo la WEB no verá esta segunda página, pero cuando vaya a visitarla ya la tendrá en la memoria caché de su navegador y se cargará muy rápidamente.

Sólo hay un pequeño detalle más: aunque al crear una página pongamos unas dimensiones para los marcos, quien la visita puede cambiar las dimensiones si pincha y arrastra la división entre los mismos. Si pretendemos evitar que el visitante "descorra la cortina" y vea el marco fantasma tendremos que utilizar el atributo noresize. El código quedaría como sigue.

<frameset cols="100%,*" framespacing="0" frameborder="0">
<frame src="paginavisible.htm" name="izquierda" noresize>
<frame src="paginafantasma.htm" name="derecha">
</frameset>

El mismo efecto se habría conseguido creando una estructura en filas en lugar de columnas. En el marco de la izquierda podríamos añadir los atributos que fueran necesarios.

 

Ten en cuenta que el ancho de banda es un bien limitado. Cada vez que empleamos la técnica comentada estamos incrementando el uso de la red, ya que el visitante descarga una página que no había solicitado en ese momento.

Procura utilizar este recurso de forma racional y sólo en aquellos casos en los que pienses que va a ser realmente útil.