Frames - Asignación de medidas en píxeles

Los frames  tienen los atributos  row y cols para la especificación del ancho y alto del elemento FRAME 

Establecer el atributo row define el número de subespacios horizontales en un conjunto de marcos. Establecer el  atributo cols define el número de subespacios verticales. Ambos atributos se pueden configurar simultáneamente para crear una cuadrícula.

Si el atributo row no está establecido, cada columna se extiende a lo largo de toda la página. Si el atributo cols no está establecido, cada fila se extiende por todo el ancho de la página. Si no se establece ningún atributo, el marco ocupa exactamente el tamaño de la página.

Los marcos se crean de izquierda a derecha para las columnas y de arriba hacia 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 los ejemplos anteriores definimos las medidas de los frames en porcentajes:

<frameset cols="20%,80%">

Cuando lo indicamos en porcentajes al redimensionar la ventana del navegador el tamaño de los frame se redimensiona en forma proporcional.

Hay situaciones donde queremos que un frame no se redimensione, por ejemplo que el frame de la izquierda donde ubicaríamos un menú de opciones siempre permanezca inalterable. Esto lo logramos indicando un valor absoluto para dicho frame.

Veamos un ejemplo donde definimos 3 frames dividiendo la ventana en tres columna. Luego queremos que el frame de la izquierda y la derecha tengan medidas inalterables, para esto lo definimos de la siguiente forma:

<frameset cols="200,*,200">

Veamos que significa el asterisco para la segunda columna. Como sabemos una ventana puede redimensionarse y las tarjetas gráficas tienen distintas resoluciones en píxeles (640x480, 800x600, 1024x768 etc.), con esta sintaxis indicamos que la primer columna ocupe siempre 200 píxeles, lo mismo la tercer columna, pero la segunda tendrá un ancho de los píxeles que restan (es decir el ancho de ventana menos 400)

Veamos la solución:

pagina1.html

<html>
<head>
<html>
<head>
<title>prueba de frames</title>
</head>
<frameset cols="200,*,200">
<frame src="pagi2.html">
<frame src="pagi3.html">
<frame src="pagi4.html">
<noframes>
<p>El navegador no soporta frames</p>
</noframes>
</frameset>
</html>

pagina2.html

<html>
<head>
<title>prueba de frames</title>
</head>
<body>
<h1>Página A</h1>
</body>
</html>

pagina3.html

<html>
<head>
<title>prueba de frames</title>
</head>
<body>
<h1>Página B</h1>
</body>
</html>

pagina4.html

<html>
<head>
<title>prueba de frames</title>
</head>
<body>
<h1>Página C</h1>
</body>
</html>

Veamos algunas variantes para utilizar el asterísco:

La primer columna es de 200 píxeles y los píxeles restantes se destribuyen entre el segundo y tercer frame.

<frameset cols="200,*,*">

Con esta sintaxis los píxeles que restan luego de aplicar los 200 píxeles del primer frame se asignan 2/3 partes al frame central y 1/3 al frame de la derecha.

<frameset cols="200,2*,*">

Podemos mezclar las unidades de medida. Con esta sintaxis el 50% corresponde al frame central, 200 píxeles al frame de la izquierda y los píxeles restantes se asignan al frame de la derecha.

<frameset cols="200,50%,*;>