Twitter bootstrap 3 deux colonnes pleine hauteur

247

J'essaie de faire une mise en page pleine hauteur à deux colonnes avec twitter bootstrap 3. Il semble que twitter bootstrap 3 ne prend pas en charge les mises en page pleine hauteur. Ce que je veux faire:

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

Si le contenu augmente, la navigation devrait également augmenter.

  • La hauteur 100% pour chaque parent ne fonctionne pas car il y a le cas où le contenu est une ligne.
  • la position absolue semble être la mauvaise façon
  • display: tableet display:table-cellrésoudre le problème, mais ce n'est pas avec élégance

html:

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

Existe-t-il un moyen de le faire avec les classes Twitter bootstrap 3 par défaut ?

uladzimir
la source
Cet élément navigation + contenu doit-il couvrir la hauteur restante de la fenêtre (écran)?
Shekhar K. Sharma
Oui. Juste pour effacer: en-tête + contenu = 100% de la fenêtre, si hauteur du contenu <= hauteur de la fenêtre moins hauteur de l'en-tête. désolé pour le mauvais anglais
uladzimir
Je ne comprends pas, ne pourriez-vous pas simplement donner l'arrière-plan au .row et permettre au col-md-9 de couvrir la partie ou vice versa? Que diriez-vous de donner à la rangée une hauteur de 100%, de donner à la hauteur de navigation 100% et de permettre au col-md-9 de se développer dynamiquement?
Chris Peterson

Réponses:

217

Edit: dans Bootstrap 4 , les classes natives peuvent produire des colonnes pleine hauteur ( DEMO ) car elles ont changé leur système de grille en flexbox. (Lisez la suite pour Bootstrap 3)


Les classes natives Bootstrap 3.0 ne prennent pas en charge la présentation que vous décrivez, cependant, nous pouvons intégrer des CSS personnalisés qui utilisent des tables CSS pour y parvenir.

Démo Bootply / Codepen

Balisage:

<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>

(Pertinent) CSS

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;
}

Le code ci-dessus permettra d'obtenir des colonnes pleine hauteur (en raison des propriétés de table css personnalisées que nous avons ajoutées) et avec un rapport 1: 3 (Navigation: Contenu) pour des largeurs d'écran moyennes et supérieures - (en raison des classes par défaut de bootstrap: col-md -3 et col-md-9)

NB:

1) Afin de ne pas gâcher les classes de colonnes natives de bootstrap, nous ajoutons une autre classe comme no-floatdans le balisage et ne définissons display:table-cellet float:nonesur cette classe (que par rapport aux classes de colonnes elles-mêmes).

2) Si nous voulons uniquement utiliser le code de la table css pour un point d'arrêt spécifique (par exemple, des largeurs d'écran moyennes et supérieures) mais pour les écrans mobiles, nous voulons revenir par défaut au comportement de bootstrap habituel, nous pouvons envelopper notre CSS personnalisé dans un requête des médias, dites:

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

Démo Codepen

Maintenant, pour les écrans plus petits, les colonnes se comporteront comme des colonnes d'amorçage par défaut (chacune ayant sa pleine largeur).

3) Si le rapport 1: 3 est nécessaire pour toutes les largeurs d'écran - alors il est probablement préférable de supprimer les classes col-md- * de bootstrap du balisage, car ce n'est pas ainsi qu'elles doivent être utilisées.

Démo Codepen

Danield
la source
Hm. Ce n'est pas vraiment ce que je recherche, peut-être y a-t-il une solution avec les classes natives de bootstrap 3? Merci quand même!
uladzimir
7
Fonctionne pour moi après avoir ajouté float: none; aux colonnes, mais sur js ce n'est pas nécessaire. Pourquoi? Mise à jour: @media - cause
uladzimir
2
@Zubzob - J'ai mis à jour ma réponse et bootply. En ajoutant une classe supplémentaire aux classes natives col-md-3 et col-md-9 - nous pouvons nous assurer que cela ne gâchera pas d'autres codes.
Danield
1
La réponse serait donc: "Non, vous ne pouvez pas faire cela avec les classes bootstrap prêtes à l'emploi"?
eran otzap
1
@Meglio veuillez lire ma réponse modifiée - merci de l'avoir signalé
Danield
68

Vous pouvez réaliser ce que vous voulez avec l' padding-bottom: 100%; margin-bottom: -100%;astuce, comme vous pouvez le voir dans ce violon.

Je change un peu votre code HTML, mais vous pouvez obtenir le même résultat avec votre propre code HTML avec le code suivant

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

.col-md-3 {
    padding-bottom: 100%;
    margin-bottom: -100%;
}
Oswaldo Acauan
la source
D'accord. Je mettrai à jour la question. J'ai une page dynamique (col-md-9 peut grandir), donc votre variante ne devrait pas fonctionner, mais je vais la tester. Merci
uladzimir
Pas quelque chose de ce que je veux dire en question. Je veux des colonnes pleine hauteur, au cas où col-md-9 aurait une ligne de hauteur de texte tout de même 100% - hauteur de l'en-tête ou 100% simple. J'ai essayé cette astuce, uniquement avec des valeurs comme 10000px, -10000px. Mais merci pour votre réponse.
uladzimir
Mes colonnes étaient hautes, j'ai donc dû modifier padding-bottom: 10000%; marge en bas: -10000%; et ça a fait l'affaire. Sinon, je suppose que 100% a à voir avec la hauteur de la page
Toolkit
2
Pour ceux qui essaient cette solution, le débordement: caché doit être appliqué à la ligne parente, pas à la colonne sans barre latérale afin de fonctionner sur tous les navigateurs. C'est correct dans le violon, mais pas dans l'explication ci-dessus.
Tim
38

Solution CSS pure

Violon de travail

En utilisant CSS2.1 uniquement, travaillez avec tous les navigateurs (IE8 +), sans spécifier de hauteur ou de largeur.

Cela signifie que si votre tête grandit soudainement plus, ou vos besoins de navigation de gauche pour agrandir, vous n'avez pas de réparer quoi que ce soit dans votre CSS.

Totalement réactif, simple et clair et très facile à gérer.

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

Explication: le conteneur divprend 100% de la hauteur du corps et il est divisé en 2 sections. La section d'en-tête s'étendra à la hauteur requise et HeightTakerprendra le reste. Comment est-il réalisé? en flottant un élément vide le long du conteneur avec une hauteur de 100% (en utilisant :before), et en donnant HeightTakerun élément vide à la fin avec la règle claire (en utilisant :after). cet élément ne peut pas être dans la même ligne que l'élément flottant, il est donc poussé jusqu'à la fin. qui est exactement le 100% du document.

Avec cela, nous faisons de la HeightTakertravée le reste de la hauteur du conteneur, sans indiquer de hauteur / marge spécifique.

à l'intérieur, HeightTakernous construisons une mise en page flottante normale (pour obtenir l'affichage comme une colonne) avec un changement mineur .. nous avons un Wrapperélément, qui est nécessaire pour que la 100%hauteur fonctionne.

Mettre à jour

Voici la démo avec les classes Bootstrap. (Je viens d'ajouter une div à votre mise en page)

avrahamcool
la source
Oui, c'est la solution la plus esthétique. Pourriez-vous le faire pour les classes bootstrap?
uladzimir
Et s'il vous plaît, expliquez comment cela fonctionne. actuellement, il est plus approprié d'approuver
uladzimir
Je ne sais pas bootstrap .. désolé. mais c'est tellement facile à utiliser .. vous pouvez le faire vous-même. J'ajouterai une explication de son fonctionnement.
avrahamcool
@baxxabit J'ai ajouté une explication. dites-moi si vous avez besoin de plus d'informations.
avrahamcool
1
Si vous redimensionnez la fenêtre, elle ne s'affichera pas correctement à l'écran.
Sadegh
25

J'ai pensé à un changement subtil, qui ne change pas le comportement d'amorçage par défaut. Et je ne peux l'utiliser que lorsque j'en ai eu besoin:

.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;
}

donc je peux l'utiliser comme ceci:

<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>
AndreDurao
la source
A fonctionné à merveille pour moi (en utilisant le bootstrap 3)
Gary Richter
Je n'ai pas réussi à faire fonctionner l'une des solutions ci-dessus, l'alignement vertical était la clé pour moi.
Nathan
9

À ma connaissance, vous pouvez utiliser jusqu'à 5 méthodes pour y parvenir:

  1. Utilisation des propriétés de tableau d'affichage CSS / cellule de tableau ou utilisation de tableaux réels.
  2. Utilisation d'un élément positionné absolu à l'intérieur du wrapper.
  3. Utilisation de la propriété d'affichage Flexbox mais, à ce jour, elle a toujours un support partiel
  4. Simulez des hauteurs de colonne complètes en utilisant la technique des fausses colonnes .
  5. Utilisation de la technique de remplissage / marge. Voir l'exemple .

Bootstrap: Je n'ai pas beaucoup d'expérience avec ça mais je ne pense pas qu'ils fournissent des styles pour ça.

.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;
}
Oriol
la source
Merci, @Oriol. Tu es incroyable. Quelques points: 1), 2) oui, mais pas ce que je veux 3) C'est une solution, mais uniquement pour les ff et chrome modernes. safari supporte une ancienne version de flexbox 4) pas les classes bootstrap 5) Les bonnes colonnes peuvent grandir. Donc débordement: caché recadrera une ligne importante. Ce n'est pas cool :) Je vais essayer votre code
uladzimir
7

Solution moderne et très simple:

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;
}
Nikolay Yenbakhtov
la source
6

Une solution CSS pure est assez facile et fonctionne comme un navigateur de charme.

Vous ajoutez simplement un grand remplissage et une marge négative tout aussi grande aux colonnes de navigation et de contenu, puis encapsulez leur ligne dans une classe avec débordement masqué.
Vue en direct
Modifier la vue

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; 
}  

Bonne chance!

David Taiaroa
la source
1
désolé, mais cela ressemble à un horrible hack qui ne vous donne pas les options pour le positionnement absolu d'un élément au bas du conteneur enfant.
Mattijs
Pas une bonne solution si vous avez un rayon de bordure inférieur ou une sorte d'atout visuel en arrière-plan div.
RandomBoy
5

La solution peut être obtenue de deux manières

  1. Utilisation de display: table et display: table-cell
  2. Utilisation du rembourrage et de la marge négative.

Les classes utilisées pour obtenir la solution ci-dessus ne sont pas fournies dans le bootstrap 3. display: table et display: table-cell sont donnés mais uniquement lors de l'utilisation de tableaux en HTML. les classes de marge négative et de remplissage ne sont pas non plus présentes.

Par conséquent, nous devons utiliser des CSS personnalisés pour y parvenir.

Ce qui suit est la première solution

Code 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>

le css correspondant:

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;
    }

Ce qui suit est la deuxième solution

Code 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>

le css correspondant:

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;
    }
user2594152
la source
Les colonnes n'ont pas une hauteur de vue de 100%
uladzimir
désolé oublié un style de base html, body, container {hauteur: 100%;} ajouter ce style à la première solution
user2594152
la colonne de droite peut s'agrandir, donc le débordement: masqué pour la ligne peut recadrer du contenu, s'il faut plus de hauteur de fenêtre.
uladzimir
supprimer le débordement: masqué de la ligne. il y a du contenu caché jsfiddle.net/gMPXG/7/embedded/result
uladzimir
Quel est le problème avec ça ??
user2594152
4

Ok, j'ai réalisé la même chose en utilisant Bootstrap 3.0

Exemple avec le dernier bootstrap

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

Le 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>

Le 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;
}
VAShhh
la source
Oui, mais c'est la même chose que la réponse approuvée. Merci
uladzimir
Oui, c'est essentiellement la même chose mais vous devez ajouter quelques petits "ajustements" (voir content:noneet autres petites choses). Je voulais poster un remplaçant «drop-in» que je peux également copypasta
VAShhh
+1 pour l'ajout de "vertical-align: top". Ma colonne de gauche était coincée au bas de la page jusqu'à ce que j'ajoute cela.
NoizWaves
3

Il semble donc que votre meilleure option consiste à padding-bottomcontrer la margin-bottomstratégie négative .

J'ai fait deux exemples. L'un avec l' <header> intérieur .container et l'autre avec l' extérieur .

Les deux versions devraient fonctionner correctement. Notez l'utilisation de la @mediarequête suivante afin qu'elle supprime le remplissage supplémentaire sur les écrans plus petits ...

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

En dehors de cela, ces exemples devraient résoudre votre problème.

Giovanni Silveira
la source
bon appel à supprimer le rembourrage supplémentaire sur les petits écrans gio
David Mann
Bravo pour le violon avec l'en-tête extérieur, c'était le seul qui fonctionnait pour mon cas.
Tinus Tate
2

il y a un moyen beaucoup plus facile de le faire si tout ce qui vous préoccupe est de définir la couleur.

Mettez ceci en premier ou en dernier dans votre balise corporelle

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

et cela dans votre css

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

vous venez de créer une forme, de l'épingler derrière la page et de l'étirer à pleine hauteur. En utilisant les classes de bootstrap existantes, vous obtiendrez la bonne largeur et cela restera réactif.

Il y a quelques limitations avec cette méthode ofc, mais si c'est pour la structure racine de la page, c'est la meilleure réponse.

Simon Stevens
la source
Pourquoi avez-vous position: absolutealors position: fixed?
ADTC
n'ont pas le plus brumeux, faute de frappe :)
Simon Stevens
Belle solution. Cependant, je ne peux que l'aligner correctement en utilisant .container-fluid. Je voudrais utiliser .container. Des idées?
Jibran
.containerou .container-fluidn'ont aucun rapport avec cela. le .col.col-md-2définit la largeur à l'aide du bootstrap. Mon CSS ci-dessus force le div à sa pleine hauteur, avec un z-index négatif suffisant pour s'assurer qu'il est derrière tout. Comme indiqué ci-dessus, ce devrait être le tout premier ou le dernier élément de votre <body>balise
Simon Stevens
2

J'ai écrit un CSS simple compatible avec Bootstrap pour créer des tables pleine largeur et hauteur:

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

Le principe est:

  • ajouter le "tablefull" sur un DIV principal
  • puis implicitement, le DIV ci-dessous créera des lignes
  • puis DIV sous les lignes seront des cellules
  • Vous pouvez utiliser la classe "tableheader" pour les en-têtes ou similaires

Le 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>

Le 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;
}
Guillaume F.
la source
Méfiez - vous des minifiers CSS, parfois ils changent 0%;à ce 0;qui est tout à fait différent. Si cela se produit, vous pouvez utiliser à la 1%;place.
Guillaume F.
1

essayer

<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 pour la classe .fill est ci-dessous

 .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%;

}

Pour votre référence, regardez simplement dans le violon.

Krishna Rani Sahoo
la source
Merci pour votre réponse, mais j'utilise twitter bootstrap 3, pas 2. S'il vous plaît, lisez getbootstrap.com/getting-started/#migration
uladzimir
bootstrap 3, aucun span n'est utilisé, changé en col.
Kooki3
D'accord. La hauteur des colonnes sera la hauteur du contenu des colonnes, mais je ne peux avoir qu'une seule ligne.
uladzimir
Merci @ Kooki3. Il suffit de changer spande col-md-et permet de voir ce qui se passe<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
ne fonctionne pas. Lisez-vous mon commentaire? jsfiddle.net/YQUQd/1/embedded/result
uladzimir
1

essaye ça

 <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>

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

Merci à Syed

Amol Shiledar
la source
2
Merci, pourriez-vous changer votre exemple pour bootstrap 3.0?
uladzimir
-1

S'il n'y aura pas de contenu après la ligne (toute la hauteur de l'écran est prise), l'astuce avec l'utilisation position: fixed; height: 100%de l' .col:beforeélément for peut bien fonctionner:

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>

Eugene Tiutiunnyk
la source
-2

Cela n'a pas été mentionné ici avec compensation.

Vous pouvez utiliser absolu pour positionner la barre latérale gauche.

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>
Meule
la source
-3

Essaye ça

<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>

Cela utilise Bootstrap 3 donc pas besoin de CSS supplémentaire, etc.

Robbo5899
la source
veuillez fournir du violon
uladzimir
Voici un exemple montrant quelque chose comme ça sur le site Web de Bootstrap: getbootstrap.com/examples/offcanvas
Dan Esparza
-3

Avez-vous vu l' afix du bootstrap dans la section JAvascript ???

Je pense que ce serait le mec de solution le meilleur et le plus facile.

Jetez-y un œil: http://getbootstrap.com/javascript/#affix

Despertaweb
la source
Pouvez-vous s'il vous plaît partager l'exemple, comment puis-je faire deux colonnes avec afix?
uladzimir
Au fait .... avez-vous essayé avec la hauteur minimale ??? Peut-être que c'est utile, non? @Baxxabit
Despertaweb
-3

Après avoir expérimenté avec le code fourni ici: Tutoriel Bootstrap

Voici une autre alternative utilisant la dernière version de Bootstrap v3.0.2:

Balisage:

<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 supplémentaire:

#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
}

Exemple JSFiddle

J'espère que cela aide toute personne intéressée.

CoderRoller
la source
jsfiddle.net/zHRZr/7 question originale sur la hauteur dynamique, mais merci quand même
uladzimir