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: table
etdisplay:table-cell
ré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 ?
html
css
twitter-bootstrap
uladzimir
la source
la source
Réponses:
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:
(Pertinent) CSS
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-float
dans le balisage et ne définissonsdisplay:table-cell
etfloat:none
sur 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:
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
la source
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
la source
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.
Explication: le conteneur
div
prend 100% de la hauteur du corps et il est divisé en 2 sections. La section d'en-tête s'étendra à la hauteur requise etHeightTaker
prendra 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 donnantHeightTaker
un é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
HeightTaker
travée le reste de la hauteur du conteneur, sans indiquer de hauteur / marge spécifique.à l'intérieur,
HeightTaker
nous construisons une mise en page flottante normale (pour obtenir l'affichage comme une colonne) avec un changement mineur .. nous avons unWrapper
élément, qui est nécessaire pour que la100%
hauteur fonctionne.Mettre à jour
Voici la démo avec les classes Bootstrap. (Je viens d'ajouter une div à votre mise en page)
la source
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:
donc je peux l'utiliser comme ceci:
la source
À ma connaissance, vous pouvez utiliser jusqu'à 5 méthodes pour y parvenir:
Bootstrap: Je n'ai pas beaucoup d'expérience avec ça mais je ne pense pas qu'ils fournissent des styles pour ça.
la source
Solution moderne et très simple:
HTML:
CSS:
la source
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
CSS
Bonne chance!
la source
La solution peut être obtenue de deux manières
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:
le css correspondant:
Ce qui suit est la deuxième solution
Code HTML:
le css correspondant:
la source
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:
Le SCSS:
la source
content:none
et autres petites choses). Je voulais poster un remplaçant «drop-in» que je peux également copypastaIl semble donc que votre meilleure option consiste à
padding-bottom
contrer lamargin-bottom
straté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
@media
requête suivante afin qu'elle supprime le remplissage supplémentaire sur les écrans plus petits ...En dehors de cela, ces exemples devraient résoudre votre problème.
la source
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
et cela dans votre css
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.
la source
position: absolute
alorsposition: fixed
?.container-fluid
. Je voudrais utiliser.container
. Des idées?.container
ou.container-fluid
n'ont aucun rapport avec cela. le.col.col-md-2
dé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>
baliseJ'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:
Le HTML:
Le CSS:
la source
0%;
à ce0;
qui est tout à fait différent. Si cela se produit, vous pouvez utiliser à la1%;
place.essayer
css pour la classe .fill est ci-dessous
Pour votre référence, regardez simplement dans le violon.
la source
span
decol-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>
essaye ça
Visitez http://www.sitepoint.com/building-responsive-websites-using-twitter-bootstrap/
Merci à Syed
la source
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:la source
Cela n'a pas été mentionné ici avec compensation.
Vous pouvez utiliser absolu pour positionner la barre latérale gauche.
CSS
HTML
la source
Essaye ça
Cela utilise Bootstrap 3 donc pas besoin de CSS supplémentaire, etc.
la source
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
la source
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:
CSS supplémentaire:
Exemple JSFiddle
J'espère que cela aide toute personne intéressée.
la source