¿Cómo construir un Diseño de 2 columnas (Fijo-Fluido) con Twitter Bootstrap?


¿Es posible crear un Diseño de 2 columnas (Fijo-Fluido) (http://www.dynamicdrive.com/style/layouts/item/css-liquid-layout-21-fixed-fluid / ) con Twitter Bootstrap (http://twitter.github.com/bootstrap/)?

¿Tiene alguna solución?

Author: Zim, 2012-01-05

3 answers

- Otra Actualización -

Desde Twitter Bootstrap versión 2.0-que vio la eliminación de la clase .container-fluid - no ha sido posible implementar un diseño fluido fijo de dos columnas usando solo las clases bootstrap-sin embargo, he actualizado mi respuesta para incluir algunos pequeños cambios CSS que se pueden hacer en su propio código CSS que harán esto posible

Es posible implementar una estructura de fluido fijo utilizando el CSS que se encuentra a continuación y ligeramente código HTML modificado tomado del Bootstrap de Twitter Andamios: diseños página de documentación:

HTML

<div class="container-fluid fill">
    <div class="row-fluid">
        <div class="fixed">  <!-- we want this div to be fixed width -->
            ...
        </div>
        <div class="hero-unit filler">  <!-- we have removed spanX class -->
            ...
        </div>
    </div>
</div>

CSS

/* CSS for fixed-fluid layout */

.fixed {
    width: 150px;  /* the fixed width required */
    float: left;
}

.fixed + div {
     margin-left: 150px;  /* must match the fixed width in the .fixed class */
     overflow: hidden;
}


/* CSS to ensure sidebar and content are same height (optional) */

html, body {
    height: 100%;
}

.fill { 
    min-height: 100%;
    position: relative;
}

.filler:after{
    background-color:inherit;
    bottom: 0;
    content: "";
    height: auto;
    min-height: 100%;
    left: 0;
    margin:inherit;
    right: 0;
    position: absolute;
    top: 0;
    width: inherit;
    z-index: -1;  
}

He mantenido la respuesta a continuación, a pesar de que la edición para admitir 2.0 la convirtió en una solución fluida-fluida, ya que explica los conceptos detrás de hacer que la barra lateral y el contenido tengan la misma altura (una parte significativa de la pregunta de los askers comentarios)


Importante

La respuesta a continuación es fluid-fluid

Actualización Como señaló @JasonCapriotti en los comentarios, la respuesta original a esta pregunta (creada para v1.0) no funcionó en Bootstrap 2.0. Por esta razón, he actualizado la respuesta para apoyar Bootstrap 2.0

Para asegurarnos de que el contenido principal llene al menos el 100% de la altura de la pantalla, necesitamos establecer la altura de html y body al 100% y cree una nueva clase css llamada .fill que tenga una altura mínima del 100%:

html, body {
    height: 100%;
}

.fill { 
    min-height: 100%;
}

Luego podemos agregar la clase .fill a cualquier elemento que necesitemos para ocupar el 100% de la altura de sceen. En este caso lo añadimos al primer div:

<div class="container-fluid fill">
    ...
</div>

Asegurarse de que la Barra lateral y las columnas de Contenido tengan la misma altura es muy difícil e innecesario. En su lugar, podemos usar el pseudo selector ::after para agregar un elemento filler que dará la ilusión de que las dos columnas tienen lo mismo altura:

.filler::after {
    background-color: inherit;
    bottom: 0;
    content: "";
    right: 0;
    position: absolute;
    top: 0;
    width: inherit;
    z-index: -1;  
}

Para asegurarnos de que el elemento .filler está posicionado relativamente al elemento .fill necesitamos agregar position: relative a .fill:

.fill { 
    min-height: 100%;
    position: relative;
}

Y finalmente añadir el estilo .filler al HTML:

HTML

<div class="container-fluid fill">
    <div class="row-fluid">
        <div class="span3">
            ...
        </div>
        <div class="span9 hero-unit filler">
            ...
        </div>
    </div>
</div>

Notas

  • Si necesita que el elemento a la izquierda de la página sea el relleno, entonces necesita cambiar right: 0 a left: 0.
 63
Author: My Head Hurts,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-08-28 07:32:58

Actualizar 2018

Bootstrap 4

Ahora que BS4 es flexbox, el fluido fijo es simple. Simplemente establezca el ancho de la columna fija y use la clase .col en la columna de fluido.

.sidebar {
    width: 180px;
    min-height: 100vh;
}

<div class="row">
    <div class="sidebar p-2">Fixed width</div>
    <div class="col bg-dark text-white pt-2">
        Content
    </div>
</div>

Http://www.codeply.com/go/7LzXiPxo6a

Bootstrap 3..

Un enfoque para un diseño fixed-fluid es usar consultas de medios que se alinean con los puntos de interrupción de Bootstrap para que solo use el ancho fijo las columnas son pantallas más grandes y luego permiten que el diseño se apile responsablemente en pantallas más pequeñas...

@media (min-width:768px) {
  #sidebar {
      min-width: 300px;
      max-width: 300px;
  }
  #main {
      width:calc(100% - 300px);
  }
}

Trabajo Bootstrap 3 Fluido fijo Demo

Preguntas y Respuestas relacionadas:
Columna de ancho fijo con un contenedor-fluido en bootstrap
¿Cómo se fija la columna izquierda y se puede desplazar hacia la derecha en Bootstrap 4, responsivo?

 12
Author: Zim,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-04-17 06:11:19

La respuesta aceptada parece ser fluido-fluido. Aquí hay una respuesta que en realidad es de fluido fijo:

Https://stackoverflow.com/a/9739345/237091

 6
Author: Scott Stafford,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 11:46:57