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.