Trabajando con frames

martes, 24 de junio de 2014
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 primeraCOLS=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.

Ejemplo: http://platea.pntic.mec.es/~abercian/guiahtml/ejemplos/indexframe4.htm