Twitter bootstrap 3 duas colunas de altura total


247

Estou tentando criar um layout de altura total de duas colunas com o twitter bootstrap 3. Parece que o twitter bootstrap 3 não suporta layouts de altura total. O que eu quero fazer:

  +-------------------------------------------------+
  |                     Header                      |
  +------------+------------------------------------+
  |            |                                    |
  |            |                                    |
  |Navigation  |         Content                    |
  |            |                                    |
  |            |                                    |
  |            |                                    |
  |            |                                    |
  |            |                                    |
  |            |                                    |
  +------------+------------------------------------+

Se o conteúdo crescer, a navegação também deve aumentar.

  • A altura 100% para todos os pais não funciona porque existe o caso em que o conteúdo é uma linha.
  • posição absoluta parece estar no caminho errado
  • display: tablee display:table-cellresolver o problema, mas não é elegante

html:

    <div class="container">
      <div class="row">
        <div class="col-md-3"></div>
        <div class="col-md-9"></div>
      </div>
    </div>

Existe maneira de fazê-lo com o twitter bootstrap padrão 3 classes?


Esse elemento de navegação + conteúdo precisa cobrir a altura restante da janela de visualização (tela)?
— Shekhar K. Sharma

Sim. Apenas para limpeza: cabeçalho + conteúdo = 100% da viewport, se a altura do conteúdo <= altura da viewport menos a altura do cabeçalho. desculpe pelo inglês ruim
— uladzimir

Eu não entendo, você não pode simplesmente dar o plano de fundo ao .row e permitir que o col-md-9 cubra a parte ou vice-versa? Que tal dar uma altura de 100% à linha, dar uma altura de navegação 100% e permitir que o col-md-9 cresça dinamicamente?
— Chris Peterson

Respostas:


217

Edit: No Bootstrap 4 , as classes nativas podem produzir colunas de altura total ( DEMO ) porque alteraram seu sistema de grade para flexbox. (Leia sobre o Bootstrap 3)


As classes nativas do Bootstrap 3.0 não suportam o layout que você descreve, no entanto, podemos integrar alguns CSS personalizados que usam tabelas css para conseguir isso.

Demonstração Bootply / Codepen

Marcação:

<header>Header</header>
<div class="container">
    <div class="row">
        <div class="col-md-3 no-float">Navigation</div>
        <div class="col-md-9 no-float">Content</div>
    </div>
</div>

CSS (relevante)

html,body,.container {
    height:100%;
}
.container {
    display:table;
    width: 100%;
    margin-top: -50px;
    padding: 50px 0 0 0; /*set left/right padding according to needs*/
    box-sizing: border-box;
}

.row {
    height: 100%;
    display: table-row;
}

.row .no-float {
  display: table-cell;
  float: none;
}

O código acima alcançará colunas de altura total (devido às propriedades personalizadas da tabela css que adicionamos) e com proporção 1: 3 (Navegação: Conteúdo) para larguras médias da tela e acima - (devido às classes padrão do bootstrap: col-md -3 e col-md-9)

NB:

1) Para não atrapalhar as classes de colunas nativas do bootstrap, adicionamos outra classe, como no-floatna marcação e apenas definimos display:table-celle float:nonenesta classe (ao contrário das próprias classes de coluna).

2) Se quisermos usar apenas o código da tabela css para um ponto de interrupção específico (digamos, larguras de tela médias e acima), mas para telas móveis, queremos voltar ao comportamento usual de autoinicialização, podemos envolver nosso CSS personalizado dentro de um consulta de mídia, diga:

@media (min-width: 992px) {
  .row .no-float {
      display: table-cell;
      float: none;
  }
}

Codepen demo

Agora, para telas menores, as colunas se comportarão como colunas de autoinicialização padrão (cada uma obtendo largura total).

3) Se a proporção de 1: 3 for necessária para todas as larguras de tela - provavelmente será melhor remover as classes col-md- * do bootstrap da marcação, porque não é assim que elas devem ser usadas.

Codepen demo


Hum. Não é realmente o que estou procurando, pode haver uma solução com bootstrap nativo de 3 classes? Obrigado mesmo assim!
— Uladzimir

7
Funciona para mim depois de adicionar float: none; para colunas, mas em js não é necessário. Por quê?
— Atual

2
@Zubzob - Atualizei minha resposta e bootply. Adicionando uma classe adicional às classes nativas col-md-3 e col-md-9 - podemos garantir que isso não atrapalhe outro código.
— Danield

1
Portanto, a resposta seria: "Não, você não pode fazer isso com as classes de bootstrap prontas para uso"?
— precisa saber é o seguinte

1
@Meglio leia minha resposta editada - obrigado por apontar isso
— DanielD

68

Você pode conseguir o que deseja com o padding-bottom: 100%; margin-bottom: -100%;truque, como pode ver neste violino.

Eu mudo seu HTML um pouco, mas você pode obter o mesmo resultado com seu próprio HTML com o seguinte código

.col-md-9 {
    overflow: hidden;
}

.col-md-3 {
    padding-bottom: 100%;
    margin-bottom: -100%;
}

Está bem. Vou atualizar a pergunta. Eu tenho uma página dinâmica (col-md-9 pode crescer), portanto, sua variante não deve funcionar, mas vou testá-la. Obrigado
— uladzimir

Não é algo que eu quero dizer em questão. Eu quero colunas de altura total, no caso em que col-md-9 tenha uma linha de altura do texto, todos devem ser 100% - altura do cabeçalho ou 100% simples. Eu tentei esse truque, apenas com valores como 10000px, -10000px. Mas obrigado pela sua resposta.
— 10133 uladzimir

Minhas colunas eram altas, então tive que alterar o fundo do preenchimento: 10000%; margem inferior: -10000%; e fez o truque. Caso contrário, eu acho que 100% tem faço com altura de página
— Toolkit

2
Para outras pessoas que tentam esta solução, o overflow: hidden precisa ser aplicado à linha pai, não à coluna que não é da barra lateral, para funcionar nos navegadores. Está correto no violino, mas não na explicação acima.
— Tim

38

Solução CSS pura

Violino de trabalho

Usando apenas CSS2.1, trabalhe com todos os navegadores (IE8 +), sem especificar nenhuma altura ou largura.

Isso significa que, se o cabeçalho aumentar repentinamente ou a navegação esquerda precisar aumentar, você não precisará consertar nada no CSS.

Totalmente responsivo, simples, claro e muito fácil de gerenciar.

<div class="Container">
    <div class="Header">
    </div>
    <div class="HeightTaker">
        <div class="Wrapper">
            <div class="LeftNavigation">
            </div>
            <div class="Content">
            </div>
        </div>
    </div>
</div>

Explicação: O contêiner divocupa 100% da altura do corpo e é dividido em 2 seções. A seção do cabeçalho abrangerá a altura necessária e HeightTakero restante será suportado. Como é conseguido? flutuando um elemento vazio ao longo do lado do contêiner com 100% de altura (usando :before) e dando ao HeightTakerelemento vazio no final a regra clara (usando :after). esse elemento não pode estar na mesma linha do elemento flutuante, então ele é empurrado até o fim. que é exatamente 100% do documento.

Com isso, tornamos o HeightTakerintervalo o restante da altura do contêiner, sem declarar qualquer altura / margem específica.

dentro disso HeightTaker, construímos um layout flutuante normal (para obter a coluna como uma tela) com uma pequena alteração. temos um Wrapperelemento necessário para que a 100%altura funcione.

Atualizar

Aqui está a demonstração com as classes Bootstrap. (Acabei de adicionar uma div ao seu layout)


Sim, é a solução mais bonita. Você poderia fazer isso para aulas de autoinicialização?
— 10133 uladzimir

E, por favor, explique como funciona. atualmente ele é o mais adequado para aprovar
— Uladzimir

Eu não sei bootstrap .. desculpe. mas é tão fácil de usar ... você pode fazer isso sozinho. Vou adicionar uma explicação de como isso funciona.
— Avrahamcool # 8/13

@baxxabit Adicionei uma explicação. diga-me se precisar de mais informações.
— Avrahamcool # 8/13

1
Se você redimensionar a janela, ela não caberia corretamente na tela.
— Sadegh

25

Pensei em uma mudança sutil, que não altera o comportamento padrão da inicialização. E só posso usá-lo quando preciso:

.table-container {
  display: table;
}

.table-container .table-row {
  height: 100%;
  display: table-row;
}

.table-container .table-row .table-col {
  display: table-cell;
  float: none;
  vertical-align: top;
}

para que eu possa usá-lo assim:

<div class="container table-container">
  <div class="row table-row">
    <div class="col-lg-4 table-col"> ... </div>
    <div class="col-lg-4 table-col"> ... </div>
    <div class="col-lg-4 table-col"> ... </div>
  </div>
</div>

Trabalhou muito bem para mim (usando inicialização 3)
— Gary Richter

Não consegui que uma das soluções acima funcionasse, o alinhamento vertical foi a chave para mim.
— 26419 Nathan

9

Que eu saiba, você pode usar até 5 métodos para fazer isso:

  1. O uso do CSS exibe as propriedades da tabela / célula da tabela ou o uso de tabelas reais.
  2. Usando um elemento posicionado absoluto dentro do invólucro.
  3. Usando a propriedade de exibição Flexbox, mas, atualmente, ele ainda possui suporte parcial
  4. Simule alturas de coluna completas usando a técnica de coluna falsa .
  5. Usando a técnica de preenchimento / margem. Veja exemplo .

Bootstrap: Não tenho muita experiência com isso, mas acho que eles não fornecem estilos para isso.

.row
{
    overflow: hidden;
    height: 100%;
}
.row .col-md-3,
.row .col-md-9 
{
    padding: 30px 3.15% 99999px; 
    float: left;
    margin-bottom: -99999px;
}
.row .col-md-3 p,
.row .col-md-9 p 
{
    margin-bottom: 30px;
}
.col-md-3
{
    background: pink;
    left:0;
    width:25%
}
.col-md-9
{
    width: 75%;
    background: yellow;
}

Obrigado, @Oriol. Você é demais. Alguns pontos: 1), 2) sim, mas não o que eu quero 3) É uma solução, mas apenas para ff e chrome modernos. o safari suporta uma versão antiga do flexbox 4) não as classes de autoinicialização 5) As colunas da direita podem crescer. Tão excedente: oculto cortará linhas importantes. Não é legal :) Vou tentar o seu código
— uladzimir 8/13

7

Solução moderna e muito simples:

HTML:

<div class="container">
  <div class="row">
    <div class="col-md-3"></div>
    <div class="col-md-9"></div>
  </div>
</div>

CSS:

.row{
    display: flex;
}

6

Uma solução CSS pura é bastante fácil e funciona como um navegador cruzado de charme.

Você simplesmente adiciona um preenchimento grande e uma margem negativa igualmente grande às colunas de navegação e conteúdo e, em seguida, agrupa sua linha em uma classe com o estouro oculto.
Visualização ao vivo
Editar visualização

HTML

<div class="container">

  <div class="row">
    <div class="col-xs-12 header"><h1>Header</h1></div>
  </div>

  <div class="row col-wrap">

    <div class="col-md-3 col">
      <h1>Nav</h1>
    </div>

    <div class="col-md-9 col">
      <h1>Content</h1>
    </div>

  </div>
</div>

CSS

.col{
margin-bottom: -99999px;
padding-bottom: 99999px;
}

.col-wrap{
overflow: hidden; 
}  

Boa sorte!


1
desculpe, mas parece um hack horrível, que não oferece as opções para o posicionamento absoluto de um elemento na parte inferior do contêiner filho.
— Mattijs

Não é uma boa solução se você tiver o raio da borda inferior ou algum tipo de ativo visual em segundo plano.
— RandomBoy

5

A solução pode ser alcançada de duas maneiras

  1. Usando display: table e display: table-cell
  2. Usando preenchimento e margem negativa.

As classes usadas para obter a solução acima não são fornecidas no bootstrap 3. display: table e display: table-cell são fornecidas, mas apenas ao usar tabelas em HTML. margem negativa e classes de preenchimento também não estão lá.

Portanto, temos que usar css personalizado para conseguir isso.

A seguir está a primeira solução

Código HTML:

<div class="container">
  <div class="row">
    <div class="col-md-12">
        <div class="page-header">
            <h3>Page-Header</h3>
        </div>
    </div>
  </div>
  <div class="row tablewrapper">
    <div class="col-md-12 tablerowwrapper">
        <div class="col-md-3 sidebar pad_top15">
            <ul class="nav nav-pills nav-stacked">
                <li class="active"><a href="#">Submenuone</a></li>
                <li><a href="#">Submenutwo</a></li>
                <li><a href="#">Submenuthree</a></li>
            </ul>
        </div>
        <div class="col-md-9 content">
            <div class="col-md-12">
                <div class="col-md-12">
                    <p>
                        Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s 
                    </p>
                </div>
                <div class="col-md-12">
                    <p>
                        Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s 
                    </p>
                </div>
                <div class="col-md-12">
                    <p>
                        Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s 
                    </p>
                </div>
                <div class="col-md-12">
                    <p>
                        Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s 
                    </p>
                </div>
                <div class="col-md-12">
                    <p>
                        Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s 
                    </p>
                </div>
                <div class="col-md-12">
                    <p>
                        Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s 
                    </p>
                </div>
            </div>
        </div>
    </div>
  </div>

</div>

o css correspondente:

html,body,.container{
        height:100%;
    }
    .tablewrapper{
        display:table;
        height:100%;
    }
    .tablerowwrapper{
        display:table-row;
    }
    .sidebar,.content{
        display:table-cell;
        height:100%;
        border: 1px solid black;
        float:none;
    }
    .pad_top15{
        padding-top:15px;
    }

A seguir está a segunda solução

Código HTML:

 <div class="container">
  <div class="row">
    <div class="col-md-12">
        <div class="page-header">
            <h3>Page-Header</h3>
        </div>
    </div>
  </div>
  <div class="row ovfhidden bord_bot height100p">
    <div class="col-md-3 sidebar pad_top15">
            <ul class="nav nav-pills nav-stacked">
                <li class="active"><a href="#">Submenuone</a></li>
                <li><a href="#">Submenutwo</a></li>
                <li><a href="#">Submenuthree</a></li>
            </ul>
        </div>
        <div class="col-md-9 content pad_top15">
            <div class="col-md-12">

                <div class="col-md-12">
                    <p>
                        Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s 
                    </p>
                </div><div class="col-md-12">
                    <p>
                        Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s 
                    </p>
                </div>

                <div class="col-md-12">
                    <p>
                        Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s 
                    </p>
                </div><div class="col-md-12">
                    <p>
                        Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s 
                    </p>
                </div>

                <div class="col-md-12">
                    <p>
                        Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s 
                    </p>
                </div><div class="col-md-12">
                    <p>
                        Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s 
                    </p>
                </div>

                <div class="col-md-12">
                    <p>
                        Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s 
                    </p>
                </div><div class="col-md-12">
                    <p>
                        Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s 
                    </p>
                </div>

                <div class="col-md-12">
                    <p>
                        Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s 
                    </p>
                </div><div class="col-md-12">
                    <p>
                        Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s 
                    </p>
                </div>

                <div class="col-md-12">
                    <p>
                        Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s 
                    </p>
                </div><div class="col-md-12">
                    <p>
                        Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s 
                    </p>
                </div>
            </div>
        </div> 
  </div>

</div>

o css correspondente:

html,body,.container{
        height:100%;
    }
    .sidebar,.content{
        /*display:table-cell;
        height:100%;*/
        border: 1px solid black;
        padding-bottom:8000px;
        margin-bottom:-8000px;
    }
    .ovfhidden{
        overflow:hidden;
    }
    .pad_top15{
        padding-top:15px;
    }
    .bord_bot{
        border-bottom: 1px solid black;
    }

Colunas não tem% altura 100 da janela
— Uladzimir

desculpe esqueci um estilo básico html, body, container {height: 100%;} adicione esse estilo à primeira solução
— user2594152 10/10

a coluna da direita pode crescer, então o estouro: oculto para a linha pode cortar algum conteúdo, se for necessário mais do que a altura da janela de visualização.
— Uladzimir

remover estouro: oculto da linha. existe conteúdo oculto jsfiddle.net/gMPXG/7/embedded/result
— uladzimir 10/10

Qual é o problema nisso ??
— user2594152

4

Ok, eu consegui a mesma coisa usando o Bootstrap 3.0

Exemplo com a última inicialização

http://jsfiddle.net/HDNQS/1/

O HTML:

<div class="header">
    whatever
</div>
<div class="container-fluid wrapper">
    <div class="row">
        <div class="col-md-3 navigation"></div>
        <div class="col-md-9 content"></div>
    </div>
</div>

O SCSS:

html, body, .wrapper {
    padding: 0;
    margin: 0;
    height: 100%;
}

$headerHeight: 43px;

.navigation, .content {
    display: table-cell;
    float: none;
    vertical-align: top;
}

.wrapper {
    display: table;
    width: 100%;
    margin-top: -$headerHeight;
    padding-top: $headerHeight;
}

.header {
    height: $headerHeight;
}

.row {
    height: 100%;
    margin: 0;
    display: table-row;
    &:before, &:after {
        content: none;
    }
}

.navigation {
    background: #4a4d4e;
    padding-left: 0;
    padding-right: 0;
}

Sim, mas é o mesmo que resposta aprovada. Obrigado
— uladzimir

Sim, é basicamente o mesmo, mas você precisa adicionar alguns pequenos "ajustes" (veja content:nonee outras pequenas coisas). Eu queria para deixar um 'drop-in' de substituição que eu posso copypasta aswell
— VAShhh

+1 para a adição de "vertical-align: top". Minha coluna da esquerda ficou presa na parte inferior da página até eu adicionar isso.
— NoizWaves

3

Portanto, parece que sua melhor opção é ir padding-bottomcontra a margin-bottomestratégia negativa .

Eu fiz dois exemplos. Um com <header> dentro .container e outro com fora .

Ambas as versões devem funcionar corretamente. Observe o uso da @mediaconsulta a seguir para remover o preenchimento extra em telas menores ...

@media screen and (max-width:991px) {
    .content { padding-top:0; }
}

Fora isso, esses exemplos devem resolver o seu problema.


boa chamada sobre a remoção da cobertura extra em telas menores gio
— David Mann

Polegares para cima para o violino com o cabeçalho externo, este foi o único a trabalhar para o meu caso.
— Tinus Tate

2

existe uma maneira muito mais fácil de fazer isso, se você só se preocupa em definir a cor.

Coloque isso primeiro ou último na sua etiqueta corporal

<div id="nfc" class="col col-md-2"></div>

e isso no seu css

#nfc{
  background: red;
  top: 0;
  left: 0;
  bottom: 0;
  position: fixed;
  z-index: -99;
}

você está apenas criando uma forma, fixando-a atrás da página e esticando-a até a altura máxima. Ao usar as classes de inicialização existentes, você obterá a largura certa e ela permanecerá responsiva.

Existem algumas limitações com esse método ofc, mas se for para a estrutura raiz da página, é a melhor resposta.


Por que você tem position: absoluteentão position: fixed?
— ADTC

não tenho a menor ideia, erro de digitação :)
— Simon Stevens

Ótima solução. No entanto, só consigo alinhar corretamente usando .container-fluid. Eu gostaria de usar .container. Ideias?
— Jibran

.containerou .container-fluidnão tem nenhuma relevância para isso. os .col.col-md-2conjuntos a largura usando inicialização. Meu CSS acima força a div a toda a altura, com z-index negativo suficiente para garantir que esteja por trás de tudo. Como dito acima, ele deve ser o primeiro ou o último elemento em seu <body>tag
— Simon Stevens

2

Eu escrevi um CSS simples compatível com o Bootstrap para criar tabelas completas de largura e altura:

Fiddle: https://jsfiddle.net/uasbfc5e/4/

O princípio é:

  • adicione o "tablefull" em um DIV principal
  • implicitamente, o DIV abaixo criará linhas
  • e então DIV abaixo das linhas serão células
  • Você pode usar a classe "tableheader" para cabeçalhos ou similares

O HTML:

<div class="tablefull">
    <div class="tableheader">
        <div class="col-xs-4">Header A</div>
        <div class="col-xs-4">B</div>
        <div class="col-xs-4">C</div>
    </div>
    <div>
        <div class="col-xs-6">Content 50% width auto height</div>
        <div class="col-xs-6">Hello World</div>
    </div>
    <div>
        <div class="col-xs-9">Content 70% width auto height</div>
        <div class="col-xs-3">Merry Halloween</div>
    </div>
</div>

O CSS:

div.tablefull {
    display: table;
    table-layout: fixed;
    width: 100%;
    height: 100%;
}

div.tablefull>div.tableheader, div.tablefull>div.tableheader>div{
    height: 0%;
}

div.tablefull>div {
    display: table-row;
}

div.tablefull>div>div {
    display: table-cell;
    height: 100%;
    padding: 0;
}

Cuidado com os minificadores de CSS, em algum momento eles mudam 0%;para o 0;que é totalmente diferente. Se isso acontecer, você pode usar 1%;.
— Guillaume F.

1

experimentar

<div class="container">
    <div class="row">
        <div class="col-md-12">header section</div>

    </div>
     <div class="row fill">
        <div class="col-md-4">Navigation</div>
        <div class="col-md-8">Content</div>

    </div>
</div>

css para a classe .fill está abaixo

 .fill{
    width:100%;
    height:100%;
    min-height:100%;
    padding:10px;
    color:#efefef;
    background: blue;
}
.col-md-12
{
    background: red;

}

.col-md-4
{
    background: yellow;
    height:100%;
    min-height:100%;

}
.col-md-8
{
    background: green;
    height:100%;
    min-height:100%;

}

Para sua referência, basta olhar para o violino.


Obrigado pela sua resposta, mas eu uso o Twitter inicialização 3, não 2. Por favor, leia getbootstrap.com/getting-started/#migration
— Uladzimir

bootstrap 3, nenhum span é usado, alterado para col.
— precisa saber é o seguinte

Está bem. A altura das colunas será igual à altura do conteúdo das colunas, mas só posso ter uma linha.
— 10133 uladzimir

Obrigado @ Kooki3. Apenas mude spanpara col-md-e vamos ver o que acontece<div class="container"> <div class="row"> <div class="col-md-12">header section</div> </div> <div class="row"> <div class="col-md-4">Navigation</div> <div class="col-md-8">Content</div> </div> </div>
— Krishna Rani Sahoo

não funciona Você leu meu comentário? jsfiddle.net/YQUQd/1/embedded/result
— uladzimir 8/13

1

tente isso

 <div class="container">
     <!-- Header-->         
  </div>
</div>
 <div class="row-fluid">
     <div class="span3 well">
         <ul class="nav nav-list">
             <li class="nav-header">Our Services</li>
                <!-- Navigation  -->
             <li class="active"><a href="#">Overview</a></li>
             <li><a href="#">Android Applications</a></li>
             <li class="divider"></li>
         </ul>
     </div>
     <div class="span7 offset1">
      <!-- Content -->         
     </div>
 </div>

Visite http://www.sitepoint.com/building-responsive-websites-using-twitter-bootstrap/

Graças a Syed


2
Obrigado, você poderia mudar seu exemplo para o bootstrap 3.0?
— 111313 uladzimir

-1

Se não houver conteúdo após a linha (a altura da tela inteira será usada), o truque com o uso position: fixed; height: 100%do .col:beforeelemento poderá funcionar bem:

header {
  background: green;
  height: 50px;
}
.col-xs-3 {
  background: pink;
}
.col-xs-3:before {
  background: pink;
  content: ' ';
  height: 100%;
  margin-left: -15px; /* compensates column's padding */
  position: fixed;
  width: inherit; /* bootstrap column's width */
  z-index: -1; /* puts behind content */
}
.col-xs-9 {
  background: yellow;
}
.col-xs-9:before {
  background: yellow;
  content: ' ';
  height: 100%;
  margin-left: -15px; /* compensates column's padding */
  position: fixed;
  width: inherit; /* bootstrap column's width */
  z-index: -1; /* puts behind content */
}
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet"/>

<header>Header</header>
<div class="container-fluid">
    <div class="row">
        <div class="col-xs-3">Navigation</div>
        <div class="col-xs-9">Content</div>
    </div>
</div>


-2

Isso não foi mencionado aqui com a compensação.

Você pode usar absoluto para posicionar a barra lateral esquerda.

CSS

.sidebar-fixed{
  width: 16.66666667%;
  height: 100%;
}

HTML

<div class="row">
  <div class="sidebar-fixed">
    Side Bar
  </div>
  <div class="col-md-10 col-md-offset-2">
    CONTENT
  </div>
</div>

-3

Tente isto

<div class="row row-offcanvas row-offcanvas-right">
<div class="col-xs-6 col-sm-3 sidebar-offcanvas" id="sidebar" role="navigation">Nav     Content</div>
<div class="col-xs-12 col-sm-9">Content goes here</div>
</div>

Isso usa o Bootstrap 3, portanto não há necessidade de CSS extra, etc ...


por favor, fornecer fiddle
— Uladzimir

Aqui está um exemplo mostrando algo parecido com isso no site da Bootstrap: getbootstrap.com/examples/offcanvas
— Dan Esparza


-3

Após experimentar o código fornecido aqui: Tutorial do Bootstrap

Aqui está outra alternativa usando o mais recente Bootstrap v3.0.2:

Marcação:

<div id="headcontainer" class="container">
           <p>Your Header</p>    
</div>
<div id="maincontainer" class="container">
      <div class="row">
         <div class="col-xs-4"> 
            <p>Your Navigation</p> 
         </div>
         <div class="col-xs-8"> 
            <p>Your Content</p> 
         </div>
      </div>
</div>

CSS adicional:

#maincontainer, #headcontainer {
width: 100%;
}

#headcontainer {
background-color:#CCCC99; 
height: 150px
}

#maincontainer .row .col-xs-4{
background-color:gray; 
height:1000px
}

#maincontainer .row .col-xs-8{
background-color:green;
height: 1000px
}

Amostra JSFiddle

Espero que isso ajude qualquer pessoa interessada.


jsfiddle.net/zHRZr/7 pergunta original sobre a altura dinâmica, mas obrigado de qualquer maneira
— Uladzimir
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.