J'ai besoin de créer une page sensible à l'aide de bootstrap en plaçant un div au centre de la page, comme dans la disposition mentionnée ci-dessous.
UPDATE pour Bootstrap 4
Alignement vertical plus simple de la grille avec flex-box
@import url('https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.6/css/bootstrap.min.css');
html,
body {
height: 100%
}
<div class="h-100 row align-items-center">
<div class="col" style="background:red">
TEXT
</div>
</div>
Solution pour Bootstrap 3
@import url('http://getbootstrap.com/dist/css/bootstrap.css');
html, body, .container-table {
height: 100%;
}
.container-table {
display: table;
}
.vertical-center-row {
display: table-cell;
vertical-align: middle;
}
<script src="http://cdnjs.cloudflare.com/ajax/libs/Twitter-bootstrap/2.1.0/bootstrap.min.js"></script>
<div class="container container-table">
<div class="row vertical-center-row">
<div class="text-center col-md-4 col-md-offset-4" style="background:red">TEXT</div>
</div>
</div>
C'est un exemple simple d'un centre horizontalement et verticalement centré dans toutes les tailles d'écran.
CSS:
html,
body {
height: 100%;
}
.container {
height: 100%;
display: flex;
justify-content: center;
align-items: center;
}
HTML:
<div class="container">
<div>
example
</div>
</div>
Dans bootstrap 4
pour centrez les enfants horizontalement, utilisez la classe bootstrap-4
justify-content-center
pour centrez les enfants verticalement, utilisez la classe bootstrap-4
align-items-center
mais souvenez-vous de ne pas oublier d'utiliser la classe d-flex avec ces classes, c'est une classe utilitaire bootstrap-4, comme ça
<div class="d-flex justify-content-center align-items-center" style="height:100px;">
<div class="bg-primary">MIDDLE</div>
</div>
Note: assurez-vous d'ajouter les utilitaires bootstrap-4 si ce code ne fonctionne pas
Mise à jour pour Bootstrap 4
Maintenant que Bootstrap 4 est une flexbox, l'alignement vertical est plus facile. Avec une hauteur maximale flexbox div, il ne reste que nous my-auto
pour obtenir des marges égales en haut et en bas ...
<div class="container h-100 d-flex justify-content-center">
<div class="jumbotron my-auto">
<h1 class="display-3">Hello, world!</h1>
</div>
</div>
http://codeply.com/go/ayraB3tjSd/bootstrap-4-vertical-center
sans tableau d'affichage et sans bootstrap, je préférerais le faire
<div class="container container-table">
<div class="row vertical-center-row">
<div class="text-center col-md-4 col-md-offset-4" style="background:red">TEXT</div>
</div>
</div>
html, body, .container-table {
height: 100%;
}
.container-table {
width:100vw;
height:150px;
border:1px solid black;
}
.vertical-center-row {
margin:auto;
width:30%;
padding:63px;
text-align:center;
}
Bonne réponse ppollono. Je jouais juste et j'ai eu une solution légèrement meilleure. Le CSS resterait le même, c'est-à-dire:
html, body, .container {
height: 100%;
}
.container {
display: table;
vertical-align: middle;
}
.vertical-center-row {
display: table-cell;
vertical-align: middle;
}
Mais pour HTML:
<div class="container">
<div class="vertical-center-row">
<div align="center">TEXT</div>
</div>
</div>
Cela suffirait.
Pas la meilleure façon, mais ça fonctionnera quand même
<div class="container-fluid h-100">
<div class="row h-100">
<div class="col-lg-12"></div>
<div class="col-lg-12">
<div class="row h-100">
<div class="col-lg-4"></div>
<div class="col-lg-4 border">
This div is in middle
</div>
<div class="col-lg-4"></div>
</div>
</div>
<div class="col-lg-12"></div>
</div>
</div>
Je pense que le moyen le plus simple de réaliser la mise en page avec bootstrap est le suivant:
<section>
<div class="container">
<div class="row">
<div align="center">
<div style="max-width: 200px; background-color: blueviolet;">
<div>
<h1 style="color: white;">Content goes here</h1>
</div>
</div>
</div>
</div>
</div>
tout ce que je faisais était d'ajouter des couches de div qui me permettaient de centrer la div, mais comme je n'utilise pas de pourcentages, vous devez spécifier la largeur maximale de la div pour qu'elle soit centrée.
Vous pouvez utiliser cette même méthode pour centrer plus d'une colonne, il vous suffit d'ajouter plusieurs couches div:
<div class="container">
<div class="row">
<div align="center">
<div style="max-width: 400px; background-color: blueviolet;">
<div class="col-md-12 col-sm-12 col-xs-12" style="background-color: blueviolet;">
<div class="col-md-8 col-sm-8 col-xs-12" style="background-color: darkcyan;">
<h1 style="color: white;">Some content</h1>
</div>
<div class="col-md-4 col-sm-4 col-xs-12" style="background-color: blue;">
<p style="color: white;">More content</p>
</div>
</div>
</div>
</div>
</div>
</div>
Note: que j'ai ajouté un div avec la colonne 12 pour md, sm et xs, si vous ne le faites pas, le premier div avec la couleur de fond (dans ce cas "blueviolet") s'effondrera, vous pourrez voir les divs enfants , mais pas la couleur de fond.
Pour la version actuelle de Bootstrap 4.3.1, utilisez
Style
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css">
<style type="text/css">
html, body {
height: 100%;
}
</style>
Code
<div class="h-100 d-flex justify-content-center">
<div class="jumbotron my-auto">
<!-- example content -->
<div class="alert alert-success" role="alert">
<h4 class="alert-heading">Title</h4>
<p>Desc</p>
</div>
<!-- ./example content -->
</div>
</div