Ver Mensaje Individual
  #1 (permalink)  
Antiguo 12/09/2011, 15:35
rhp07
 
Fecha de Ingreso: agosto-2009
Mensajes: 13
Antigüedad: 14 años, 8 meses
Puntos: 0
Pregunta Página con 3 columnas (2 estáticas y una dinámica)

Hola a todos, hoy traigo un especial rompecabezas que me ha llevado a mis limites a lo que va el CSS. Resulta que últimamente he descubierto el potencial de AJAX junto con PHP y lo único que me frena es el diseño que necesito.

Se trata de un diseño de 3 columnas con una barra arriba y otra barra abajo.

Las barras azules tienen una altura de 25 pixeles cada uno pero el ancho siempre se mantiene al tamaño de la ventana.

El diseño de las 3 columnas tenga las dos primeras columnas (amarillo y rosa) que sean de un tamaño estático (El amarillo de 25 pixeles de ancho y el rosa de 200 pixeles). y el contenido (lo que se muestra de color blanco) debe de usar todo el resto del espacio que queda.

Ahora viene el problema:
Resulta que mediante Javascript hago colapsar el sidebar (de color rosa). Ésto hace que de repente aparezca un espacio sin nada ya que el contenido (de color blanco) es de posición absoluta. He conseguido tener un efecto parecido al que deseo usando el atributo Relative y Block en las 3 columnas, sin embargo ésto tan solo arregla el problema horizontal y trae con sigo un nuevo problema, que es el vertical, que ya no ocupa el 100% de espacio entre la barra superior y la inferior.

La barra amarilla tambien puede ser colapsada mediante javascript, con lo que el contenido (color blanco) puede terminar ocupando el 100% del ancho.

Sería fácil decir que se pueden ajustar las 3 columnas tocando el codigo CSS directamente desde javascript, pero ésto es intensivo de CPU y un metodo bastante rústico y prefiero usar CSS antes que javascript para realizar éstas tareas.

Que puedo hacer? Agradezco todas las ideas y soluciones. Un saludo, Robert.

[url=http://postimage.org/image/44d1zw10/][img]http://s2.postimage.org/1vxbwwfl5/Captura.jpg[/img][/url]

Aquí el código de muestra:
Código HTML:
Ver original
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  2. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3.     <link rel="stylesheet" type="text/css" href="http://meyerweb.com/eric/tools/css/reset/reset.css" />
  4.     <style type="text/css">
  5.     /* BARRA SUPERIOR */
  6.     .barra_arriba{
  7.         min-width: 550px;
  8.         top: 0px;
  9.         left: 0px;
  10.         right: 0px;
  11.         position: relative;
  12.         background: blue;
  13.         height:25px;
  14.         border-bottom:1px solid #B5B5B5;
  15.     }
  16.    
  17.     /* BARRA DE ABAJO */
  18.     .barra_abajo{
  19.         min-width: 550px;
  20.         bottom: 0px;
  21.         left: 0px;
  22.         right: 0px;
  23.         position: absolute;
  24.         background: blue;
  25.         height:25px;
  26.         border-top:1px solid #B5B5B5;
  27.     }
  28.  
  29.     /* BARRA IZQUIERDA */
  30.     .barra_izquierda{
  31.         top: 25px;
  32.         float: left;
  33.         left: -1px;
  34.         bottom: 25px;
  35.         position: absolute;
  36.         display: block;
  37.         background: yellow;
  38.         border-right:1px solid #B5B5B5;
  39.         border-bottom:1px solid #B5B5B5;
  40.         width: 25px;
  41.     }
  42.  
  43.     /* BARRA MENU IZQUIERDA */
  44.     .menu{
  45.         top: 26px;
  46.         bottom: 25px;
  47.         left: 25px;
  48.         float: left;
  49.         position: absolute;
  50.         display: block;
  51.         background: pink;
  52.         z-index: 10000;
  53.         border-right:1px solid #B5B5B5;
  54.         border-bottom:1px solid #B5B5B5;
  55.     }
  56.  
  57.     .menu_contenido{
  58.         top: 0px;
  59.         bottom: 0px;
  60.         position: relative;
  61.         height: 100%;
  62.         background: rgba(255, 255, 255, 0.7);
  63.         margin-right: 0px;
  64.         width: 200px; /* TAMAÑO DEL SIDEBAR */
  65.         visibility: visible;
  66.     }
  67.  
  68.     /* CONTENIDO */
  69.     .contenido{
  70.         top: 26px;
  71.         right: 0px;
  72.         bottom: 25px;
  73.         position: absolute;
  74.         background: rgba(255, 255, 255, 0.2);
  75.         z-index: 1;
  76.         left: 225px;
  77.         overflow: auto;
  78.     }
  79.     </style>
  80. </head>
  81.     <div class="barra_arriba">Barra de arriba</div>
  82.    
  83.     <div class="barra_izquierda">B</br>a</br>r</br>r</br>a</br></br>i</br>z</br>q</br>u</br>i</br>e</br>r</br>d</br>a</div>
  84.  
  85.     <div class="menu">
  86.         <div class="menu_contenido">   
  87.         <b>Sidebar Menu</b><br>
  88.         Opcion 1<br>
  89.         Opcion 2<br>
  90.         Opcion 3<br>
  91.         </div>
  92.     </div>
  93.  
  94.     <div class="contenido">Esto es basicamente como un iframe, solo que su contenido es cargado mediante AJAX</div>
  95.    
  96.     <div class="barra_abajo">Barra de abajo</div>
  97. </body>
  98. </html>