Ya comentamos al ver la creación del código HTML para los marcos que ha sido uno de los temas controvertidos a la hora de desarrollar contenidos para la web. Desde el punto de vista positivo podemos aportan algunos elementos destacables:
Pero también podemos señalar unos algunos elementos negativos:
Habría muchísimos más argumentos a favor y en contra de los marcos y, mientras que los partidarios de los mismos dirían que la gran mayoría de los problemas se solucionarían con javascript, los detractores podrían apuntar que parece ser que la línea de trabajo de las instituciones de estandarización va por desaprobar los frames. Es pues absurdo meterse en esta discusión, pero sí podemos aportar alguna alternativa mediante CSS para que pueda estudiarse y utilizarse si nos interesa.
Dos marcos verticales
La idea es sencilla: creamos dos capas y las posicionamos dentro de la página. Una de ellas contendrá una capa con el menú y la otra una capa con el contenido. El motivo para crear las capas de menú y contenido y anidarlas dentro de izquierda y derecha respectivamente es evitar que haya problemas al cambiar de navegador con los márgenes y el posicionamiento. Cada página repetirá la capa de menú e irá variando la capa que desarrolla el contenido.
El navegador Internet Explorer no soporta correctamente la posición fixed, sin embargo con este código se consigue que mantenga fija la capa de la izquierda a costa de que, en ocasiones, añada una segunda barra de desplazamiento para la capa de la derecha.
<style type="text/css">
<!--
body{margin:0; height:100%;}
div#izquierda { position:fixed; top:0; left:0; width:25%; height:100%; overflow:auto;
background-color:#3399FF}
div#derecha { position:absolute; top:0; left:25%; width:75%; height:100%; overflow:auto;
background-color:#D9F2F2 }
#menu{margin-left:10px; margin-right:10px;}
#contenido{margin-left:10px; margin-right:10px;}
-->
</style>
Tres marcos
La otra estructura habitual de presentación es un marco superior que abarca toda la anchura y dos marcos verticales. También se puede crear una estructura de este tipo utilizando CSS, pero, como siempre, el problema aparece con el insuficiente soporte que da Internet Explorer a algunas propiedades, entre ellas position:fixed, lo cual nos obliga a introducir algunas propiedades extras, como el indicador de profundidad z-index para la franja superior.
A continuación se muestra el código en el que se basa el ejemplo
que se presenta.
<style type="text/css">
<!--
body{margin:0; height:100%;}
div#Superior { position:fixed; top:0; left:0; width:100%; height:35px; overflow:auto;
background-color:#BBC7F7; z-index:100}
div#Izquierda { position:fixed; top:35px; left:0; width:25%; height:100%;
overflow:auto; background-color:#3399FF}
div#Derecha { position:absolute; top:35px; overflow:auto; margin-left:25%;
height:100%; width:75%; background-color:#D9F2F2;}
-->
</style>