Foros del Web » Creando para Internet » CSS »

Página con 3 columnas (2 estáticas y una dinámica)

Estas en el tema de Página con 3 columnas (2 estáticas y una dinámica) en el foro de CSS en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 12/09/2011, 15:35
 
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>
  #2 (permalink)  
Antiguo 12/09/2011, 16:09
Avatar de RafaRG  
Fecha de Ingreso: julio-2011
Ubicación: Córdoba, España
Mensajes: 124
Antigüedad: 12 años, 9 meses
Puntos: 13
Respuesta: Página con 3 columnas (2 estáticas y una dinámica)

¿has probado a ponerle un width a "menu"?
  #3 (permalink)  
Antiguo 13/09/2011, 06:56
 
Fecha de Ingreso: agosto-2009
Mensajes: 13
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: Página con 3 columnas (2 estáticas y una dinámica)

Cita:
Iniciado por RafaRG Ver Mensaje
¿has probado a ponerle un width a "menu"?
el div de menu adquiere el width de contenido_menu (se puede comprobar poniendole un color diferente a menu y veremos que cambia de tamaño. Tambien pude haber puesto solo el menú y poner su width (me hace falta el div de contenido por que el contenido del menú se carga mediante AJAX tambien).

He probado ambos casos pero sigue sin funcionar.
  #4 (permalink)  
Antiguo 13/09/2011, 07:04
Avatar de RafaRG  
Fecha de Ingreso: julio-2011
Ubicación: Córdoba, España
Mensajes: 124
Antigüedad: 12 años, 9 meses
Puntos: 13
Respuesta: Página con 3 columnas (2 estáticas y una dinámica)

¿has probado también a poner un div con un determinado white que contenga a <div class="contenido">? mi idea es que pongas los div de fondo con el ancho elegido y luego pongas encima de cada uno los div que cargan el AJAX

Etiquetas: columnas, dinamico
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:28.