Frames

Los frames (marcos o cuadros) permiten dividir la ventana en varias más pequeñas, de modo que en cada una de ellas se cargua una página html distinta. Las versiones más antiguas de los navegadores no tienen implementada esta característica, por lo que no podrán verlos.

Sintaxis

Los frames se declaran con la etiqueta <FRAMESET>, que debe ser colocada antes de la etiqueta <BODY>. Si no se cumple este requisito, la etiqueta se ignorará.
Un ejmplo sencillo es el siguiente: (puedes ver el ejemplo real pulsando aquí)

<HTML>
<HEAD><TITLE> Título de la página </TITLE></HEAD>

     <FRAMESET ROWS=75,*>

           <FRAME SRC="frames1.htm" >
           <FRAME SRC="frames2.htm" >

     </FRAMESET>

     <NOFRAMES>
         <BODY>
             Lo siento,su navegador no soporta frames.
             Pulse <a href="frames1.htm>aquí </A> 
             para acceder a los contenidos de estas páginas.
         </BODY>
     </NOFRAMES>

</HTML>

EL atributo ROWS (filas) es el que define el número y el tamaño de los frames, en este caso dos filas, de 75 píxels la primera y el resto de la ventana la segunda. También se puede dividir en columnas mediante COLS

El tamaño de los frames se puede especificar de más formas:
COLS=*,5* dos columnas, la segunda cinco veces mayor que la primera
COLS=150,*,150 tres colunmas, la primera y tercera de 150 píxels, la segunda ocupa el resto.
ROWS=20%,80% dos filas que ocupan el 20 % y el 80 % del espacio respectivamente.

Las etiquetas NOFRAMES y BODY solamente se usan por cortesía, de hecho se pueden suprimir.

Las etiquetas FRAME SRC="frames.htm" cargan las página indicadas en el frame correspondiente.

También es posible anidar frames, llamando a una página que tenga de nuevo frames o bien declarándolo explicitamente. Un ejemplo de esto último es el que aparece abajo (el real aquí )

<FRAMESET COLS=20%,*>

    <FRAME SRC="frames1.htm">

        <FRAMESET ROWS=20%,*>
               <FRAME SRC="frames2.htm">
               <FRAME SRC="frames3.htm">
        </FRAMESET>

</FRAMESET>

Este código divide la ventana en dos columnas, la primera del 20 % del ancho total, y la segunda queda dividida a su vez en dos filas, siendo la primera de ellas un 20 % del total

 

El atributo TARGET

Lo más interesante de los frames es la posibilidad que tienen de interactuar entre si, es decir pulsar un enlace en el frame 1 y cargar el contenido en el frame 2.
Para conseguir esto hay que darle un nombre a los frames y luego indicar en el enlace donde se va a cargar mediante el atributo
TARGET. Veamos un ejemplo

<HTML>
<HEAD><TITLE> Frames --Ejemplo 3--</TITLE></HEAD>

     <FRAMESET COLS=150,*>

           <FRAME SRC="frames4.htm" NAME=margen>
           <FRAME SRC="frames5.htm" NAME=principal>

     </FRAMESET>

</HTML>

Los enlaces de la página frames4.htm , que es la que se carga en el margen izquierdo,se escriben de la forma:
<A HREF="frames1.htm" TARGET=principal>Frame 1 </A>

Hay ciertos valores reservados para TARGET, estos son

TARGET=_top, hace que la página se cargue en la ventana completa del navegador.
TARGET=_self, hace que la página se cargue en la misma ventana del frame actual.
TARGET=_parent, hace que la página se cargue en el frame "padre", del que desciende el actual
TARGET=_blank, hace que la página se cargue en una nueva ventana.
TARGET=nombre, hace que la página se cargue en el frame llamado nombre. Si no existe se carga en una ventana nueva

Atributos de FRAME

En los frames se pueden modificar algunas de sus características por medio de las etiquetas que siguen:

SCROLLING= yes, no , auto . Indica si el frame llevará siempre, nunca o cuando lo necesite, barra de deslizamiento vertical

BORDERCOLOR="color" . Indica el color del borde

MARGINWIDTH=n . Indica el margen horizontal, tanto derecho como izquierdo, en píxels

MARGINHEIGHT=n . Indica el margen vertical, tanto superior como inferior, en píxels

NORESIZE . Indica que el frame no se puede redimensionar. Si no se pone este atributo colocando el cursor en el borde del frame, permitiría su deslizamiento

Atributo de FRAMESET

FRAMEBORDER=yes, no . Indica si los frames tendrán bordes o no.

Puedes ver un ejemplo más de frames aquí