Je veux centrer un div
verticalement avec CSS. Je ne veux pas de tableaux ni de JavaScript, mais uniquement du CSS pur. J'ai trouvé des solutions, mais toutes ne disposent pas du support d'Internet Explorer 6.
<body>
<div>Div to be aligned vertically</div>
</body>
Comment centrer un div
verticalement dans tous les principaux navigateurs, y compris Internet Explorer 6?
Vous trouverez ci-dessous la meilleure solution globale que je pourrais construire pour centrer verticalement et horizontalement une zone de contenu à largeur fixe à hauteur variable . Il a été testé et fonctionne pour les versions récentes de Firefox, Opera, Chrome et Safari.
.outer {
display: table;
position: absolute;
top: 0;
left: 0;
height: 100%;
width: 100%;
}
.middle {
display: table-cell;
vertical-align: middle;
}
.inner {
margin-left: auto;
margin-right: auto;
width: 400px;
/*whatever width you want*/
}
<div class="outer">
<div class="middle">
<div class="inner">
<h1>The Content</h1>
<p>Once upon a midnight dreary...</p>
</div>
</div>
</div>
Voir un exemple de travail avec un contenu dynamique
J'ai intégré du contenu dynamique pour tester la flexibilité et j'aimerais savoir si quelqu'un y voit un problème. Cela devrait aussi bien fonctionner pour les superpositions centrées - lightbox, pop-up, etc.
Un de plus que je ne vois pas sur la liste:
.Center-Container {
position: relative;
height: 100%;
}
.Absolute-Center {
width: 50%;
height: 50%;
overflow: auto;
margin: auto;
position: absolute;
top: 0; left: 0; bottom: 0; right: 0;
border: solid black;
}
height
doit être déclaré (voir hauteur variable )overflow: auto
pour éviter le débordement du contenu (voir Débordement).Le moyen le plus simple serait le suivant lignes de CSS:
1) position: relative;
2) en haut: 50%;
) transformer: translateY (-50%);
Voici un EXEMPLE:
div.outer-div {
height: 170px;
width: 300px;
background-color: lightgray;
}
div.middle-div {
position: relative;
top: 50%;
-webkit-transform: translateY(-50%);
-ms-transform: translateY(-50%);
transform: translateY(-50%);
}
<div class='outer-div'>
<div class='middle-div'>
Test text
</div>
</div>
En fait, vous avez besoin de deux divisions pour le centrage vertical. La div contenant le contenu doit avoir une largeur et une hauteur.
#container {
position: absolute;
top: 50%;
margin-top: -200px;
/* half of #content height*/
left: 0;
width: 100%;
}
#content {
width: 624px;
margin-left: auto;
margin-right: auto;
height: 395px;
border: 1px solid #000000;
}
<div id="container">
<div id="content">
<h1>Centered div</h1>
</div>
</div>
Voici le résultat
Maintenant, la solution flexbox est un moyen très simple pour les navigateurs modernes, je vous recommande donc ceci:
.container{
display: flex;
align-items: center;
justify-content: center;
height: 100%;
background:green;
}
body, html{
height:100%;
}
<div class="container">
<div>Div to be aligned vertically</div>
</div>
C’est la méthode la plus simple que j’ai trouvée et je l’utilise tout le temps ( démo jsFiddle ici )
Merci Chris Coyier de CSS Astuces pour cet article .
html, body{
height: 100%;
margin: 0;
}
.v-wrap{
height: 100%;
white-space: nowrap;
text-align: center;
}
.v-wrap:before{
content: "";
display: inline-block;
vertical-align: middle;
width: 0;
/* adjust for white space between pseudo element and next sibling */
margin-right: -.25em;
/* stretch line height */
height: 100%;
}
.v-box{
display: inline-block;
vertical-align: middle;
white-space: normal;
}
<div class="v-wrap">
<article class="v-box">
<p>This is how I've been doing it for some time</p>
</article>
</div>
Le support commence par IE8.
Après de nombreuses recherches, j'ai finalement trouvé la solution ultime. Cela fonctionne même pour les éléments flottants. Voir la source
.element {
position: relative;
top: 50%;
transform: translateY(-50%); /* or try 50% */
}
Pour centrer la div sur une page, vérifiez le lien de violon .
#vh {
margin: auto;
position: absolute;
top: 0;
left: 0;
bottom: 0;
right: 0;
}
.box{
border-radius: 15px;
box-shadow: 0 0 8px rgba(0, 0, 0, 0.4);
padding: 25px;
width: 100px;
height: 100px;
background: white;
}
<div id="vh" class="box">Div to be aligned vertically</div>
Une autre option est d'utiliser flex box, vérifiez le lien de violon .
.vh {
background-color: #ddd;
height: 400px;
align-items: center;
display: flex;
}
.vh > div {
width: 100%;
text-align: center;
vertical-align: middle;
}
<div class="vh">
<div>Div to be aligned vertically</div>
</div>
Une autre option consiste à utiliser une transformation CSS 3:
#vh {
position: absolute;
top: 50%;
left: 50%;
/*transform: translateX(-50%) translateY(-50%);*/
transform: translate(-50%, -50%);
}
.box{
border-radius: 15px;
box-shadow: 0 0 8px rgba(0, 0, 0, 0.4);
padding: 25px;
width: 100px;
height: 100px;
background: white;
}
<div id="vh" class="box">Div to be aligned vertically</div>
Notes
1. L'élément parent reçoit le nom de la classe.
2. Ajoutez des préfixes de fournisseur flex si requis par votre navigateurs pris en charge .
.verticallyCenter {
display: flex;
align-items: center;
}
<div class="verticallyCenter" style="height:200px; background:beige">
<div>Element centered vertically</div>
</div>
Malheureusement, mais sans surprise, la solution est plus compliquée qu'on ne le souhaiterait. Aussi, malheureusement, vous devrez utiliser des divs supplémentaires autour de la div que vous voulez centrer verticalement.
Pour les navigateurs conformes aux normes tels que Mozilla, Opera, Safari, etc., vous devez définir la division externe à afficher sous forme de tableau et la division interne à être affiché comme une table-cellule - qui peut ensuite être centrée verticalement. Pour Internet Explorer, vous devez positionner la div interne de manière absolue dans le external div et spécifiez ensuite le haut comme 50% . Les pages suivantes expliquent bien cette technique et fournissent également des exemples de code:
Il existe également une technique pour effectuer le centrage vertical à l'aide de JavaScript. alignement vertical du contenu avec JavaScript et CSS le démontre.
La solution la plus simple est la suivante:
.outer-div{
width: 100%;
height: 200px;
display: flex;
border:1px solid #000;
}
.inner-div{
margin: auto;
text-align:center;
border:1px solid red;
}
<div class="outer-div">
<div class="inner-div">
Hey there!
</div>
</div>
Si quelqu'un s'intéresse à Internet Explorer 10 (et versions ultérieures uniquement), utilisez flexbox
:
.parent {
width: 500px;
height: 500px;
background: yellow;
display: -webkit-flex;
display: -ms-flexbox;
display: flex;
-webkit-justify-content: center;
-ms-flex-pack: center;
justify-content: center;
-webkit-align-items: center;
-ms-flex-align: center;
align-items: center;
}
.centered {
width: 100px;
height: 100px;
background: blue;
}
<div class="parent">
<div class="centered"></div>
</div>
Prise en charge de Flexbox: http://caniuse.com/flexbox
Si vous ne vous souciez pas d'Internet Explorer 6 et 7, vous pouvez utiliser une technique qui implique deux conteneurs.
display: table;
display: table-cell;
vertical-align: middle;
display: inline-block;
Vous pouvez ajouter le contenu de votre choix dans la zone de contenu sans se soucier de sa largeur ou de sa hauteur!
body {
margin: 0;
}
.outer-container {
position: absolute;
display: table;
width: 100%; /* This could be ANY width */
height: 100%; /* This could be ANY height */
background: #ccc;
}
.inner-container {
display: table-cell;
vertical-align: middle;
}
.centered-content {
display: inline-block;
background: #fff;
padding: 20px;
border: 1px solid #000;
}
<div class="outer-container">
<div class="inner-container">
<div class="centered-content">
Malcolm in the Middle
</div>
</div>
</div>
Voir aussi ce violon !
Si vous souhaitez centrer horizontalement et verticalement, vous devez également disposer des éléments suivants.
text-align: center;
text-align: left;
ou text-align: right;
, par exemple, sauf si vous souhaitez que le texte soit centrébody {
margin: 0;
}
.outer-container {
position: absolute;
display: table;
width: 100%; /* This could be ANY width */
height: 100%; /* This could be ANY height */
background: #ccc;
}
.inner-container {
display: table-cell;
vertical-align: middle;
text-align: center;
}
.centered-content {
display: inline-block;
text-align: left;
background: #fff;
padding: 20px;
border: 1px solid #000;
}
<div class="outer-container">
<div class="inner-container">
<div class="centered-content">
Malcolm in the Middle
</div>
</div>
</div>
Voir aussi ce violon !
Un moyen moderne de centrer un élément verticalement serait d'utiliser flexbox
.
Vous avez besoin d'un parent pour décider de la taille et d'un enfant pour centrer.
L'exemple ci-dessous centrera un div au centre de votre navigateur. Ce qui est important (dans mon exemple) est de définir height: 100%
sur body
et html
, puis min-height: 100%
dans votre conteneur.
body, html {
background: #F5F5F5;
box-sizing: border-box;
height: 100%;
margin: 0;
}
#center_container {
align-items: center;
display: flex;
min-height: 100%;
}
#center {
background: white;
margin: 0 auto;
padding: 10px;
text-align: center;
width: 200px;
}
<div id='center_container'>
<div id='center'>I am center.</div>
</div>
.center {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%); /* (x, y) => position */
-ms-transform: translate(-50%, -50%); /* IE 9 */
-webkit-transform: translate(-50%, -50%); /* Chrome, Safari, Opera */
}
.vertical {
position: absolute;
top: 50%;
//left: 0;
transform: translate(0, -50%); /* (x, y) => position */
}
.horizontal {
position: absolute;
//top: 0;
left: 50%;
transform: translate(-50%, 0); /* (x, y) => position */
}
div {
padding: 1em;
background-color: grey;
color: white;
}
<body>
<div class="vertical">Vertically left</div>
<div class="horizontal">Horizontal top</div>
<div class="center">Vertically Horizontal</div>
</body>
Connexes: Centrer une image
C'est toujours là que je vais quand je dois revenir à ce numéro .
Pour ceux qui ne veulent pas faire le saut:
position:relative
ou position:absolute
.position:absolute
et top:50%
sur le conteneur enfant pour déplacer le haut vers le milieu du parent.Un exemple de ceci dans le code:
<style type="text/css">
#myoutercontainer {position:relative}
#myinnercontainer {position:absolute; top:50%; height:10em; margin-top:-5em}
</style>
...
<div id="myoutercontainer">
<div id="myinnercontainer">
<p>Hey look! I'm vertically centered!</p>
<p>How sweet is this?!</p>
</div>
</div>
Je viens d'écrire ce CSS et pour en savoir plus, merci de lire: Cet article avec vertical aligne n'importe quoi avec seulement 3 lignes de CSS .
.element {
position: relative;
top: 50%;
transform: perspective(1px) translateY(-50%);
}
tilisation de la propriété flex de CSS.
.parent {
width: 400px;
height:200px;
background: blue;
display: flex;
align-items: center;
justify-content:center;
}
.child {
width: 75px;
height: 75px;
background: yellow;
}
<div class="parent">
<div class="child"></div>
</div>
ou par en utilisant display: flex;
et margin: auto;
.parent {
width: 400px;
height:200px;
background: blue;
display: flex;
}
.child {
width: 75px;
height: 75px;
background: yellow;
margin:auto;
}
<div class="parent">
<div class="child"></div>
</div>
afficher le centre de texte
.parent {
width: 400px;
height: 200px;
background: yellow;
display: flex;
align-items: center;
justify-content:center;
}
<div class="parent">Center</div>
tilisation du pourcentage (%) de hauteur et de largeur.
.parent {
position: absolute;
height:100%;
width:100%;
background: blue;
display: flex;
align-items: center;
justify-content:center;
}
.child {
width: 75px;
height: 75px;
background: yellow;
}
<div class="parent">
<div class="child"></div>
</div>
La réponse de Billbad ne fonctionne qu'avec une largeur fixe du .inner
div. Cette solution fonctionne pour une largeur dynamique en ajoutant l'attribut text-align: center
à la .outer
div.
.outer {
position: absolute;
display: table;
width: 100%;
height: 100%;
text-align: center;
}
.middle {
display: table-cell;
vertical-align: middle;
}
.inner {
text-align: center;
display: inline-block;
width: auto;
}
<div class="outer">
<div class="middle">
<div class="inner">
Content
</div>
</div>
</div>
Je pense une solution solide pour tous les navigateurs sans utiliser flexbox - "align-items: center;" est une combinaison d'affichage: table et vertical-align: middle ;.
.vertically-center
{
display: table;
width: 100%; /* optional */
height: 100%; /* optional */
}
.vertically-center > div
{
display: table-cell;
vertical-align: middle;
}
<div class="vertically-center">
<div>
<div style="border: 1px solid black;">some text</div>
</div>
</div>
Le lien suivant présente un moyen simple de le faire avec seulement 3 lignes dans votre CSS:
vertical aligner n'importe quoi avec seulement 3 lignes de CSS .
Crédits à : Sebastian Ekström .
Je sais que la question a déjà une réponse mais j'ai vu l'utilité dans le lien pour sa simplicité.
Ne répondez pas à la compatibilité du navigateur, mais mentionnez également la nouvelle grille et la fonctionnalité pas si nouvelle Flexbox.
Grille
De: Mozilla - Documentation sur la grille - Aligner les divisions verticalement
Prise en charge du navigateur: prise en charge du navigateur de grille
CSS:
.wrapper {
display: grid;
grid-template-columns: repeat(4, 1fr);
grid-gap: 10px;
grid-auto-rows: 200px;
grid-template-areas:
". a a ."
". a a .";
}
.item1 {
grid-area: a;
align-self: center;
justify-self: center;
}
HTML:
<div class="wrapper">
<div class="item1">Item 1</div>
</div>
Flexbox
Prise en charge du navigateur: prise en charge du navigateur Flexbox
CSS:
display: -webkit-box;
display: -moz-box;
display: -ms-flexbox;
display: -webkit-flex;
display: flex;
align-items: center;
justify-content: center;
Les trois lignes de code utilisant transform
fonctionnent pratiquement sur les navigateurs modernes et Internet Explorer:
.element{
position: relative;
top: 50%;
transform: translateY(-50%);
-moz-transform: translateY(-50%);
-webkit-transform: translateY(-50%);
-ms-transform: translateY(-50%);
}
J'ajoute cette réponse car j'ai trouvé des lacunes dans la version précédente de cette réponse (et Stack Overflow ne me permet pas de simplement commenter).
Le paramètre 'position' perturbe le style si la div en cours est dans le corps et n'a pas de div en conteneur. Cependant, "corrigé" semble fonctionner, mais il corrige évidemment le contenu au centre de la fenêtre
J'ai également utilisé ce style pour centrer certaines divs superposées et constaté que dans Mozilla, tous les éléments de cette div transformée avaient perdu leurs bordures inférieures. Peut-être un problème de rendu. Mais l'ajout du remplissage minimal à certains d'entre eux l'a rendu correctement. Chrome et Internet Explorer (de manière surprenante) ont restitué les cases sans aucun remplissage.
body, html { margin: 0; }
body {
display: grid;
min-height: 100vh;
align-items: center;
}
<div>Div to be aligned vertically</div>
Surtout pour les divs parents de hauteur relative (inconnue), la solution centrée sur l'inconn me convient parfaitement. Il y a quelques très bons exemples de code dans l'article.
Il a été testé sous Chrome, Firefox, Opera et Internet Explorer.
/* This parent can be any width and height */
.block {
text-align: center;
}
/* The ghost, nudged to maintain perfect centering */
.block:before {
content: '';
display: inline-block;
height: 100%;
vertical-align: middle;
margin-right: -0.25em; /* Adjusts for spacing */
}
/* The element to be centered, can
also be of any width and height */
.centered {
display: inline-block;
vertical-align: middle;
width: 300px;
}
<div style="width: 400px; height: 200px;">
<div class="block" style="height: 90%; width: 100%">
<div class="centered">
<h1>Some text</h1>
<p>Any other text..."</p>
</div>
</div>
</div>
Je l'ai fait avec ceci (changer la largeur, la hauteur, la marge supérieure et la marge gauche en conséquence):
.wrapper {
width:960px;
height:590px;
position:absolute;
top:50%;
left:50%;
margin-top:-295px;
margin-left:-480px;
}
<div class="wrapper"> -- Content -- </div>
Il y a un truc que j'ai découvert récemment: vous devez utiliser top 50%
& alors vous faites un translateY(-50%)
.outer-div {
position: relative;
height: 150px;
width: 150px;
background-color: red;
}
.centered-div {
position: absolute;
top: 50%;
-webkit-transform: translateY(-50%);
-ms-transform: translateY(-50%);
transform: translateY(-50%);
background-color: white;
}
<div class='outer-div'>
<div class='centered-div'>
Test text
</div>
</div>
Pour les nouveaux arrivants s'il vous plaît essayez
display: flex;
align-items: center;
justify-content: center;
Je l'utilise. Cela fonctionne dans Internet Explorer 8 et versions ultérieures:
height:268px
- pour display:table
agit comme min-height.
CSS:
* {
padding: 0;
margin: 0;
}
body {
background: #cc9999;
}
p {
background: #f0ad4e;
}
#all {
margin: 200px auto;
}
.ff-valign-wrap {
display: table;
width: 100%;
height: 268px;
background: #ff00ff;
}
.ff-valign {
display: table-cell;
height: 100%;
vertical-align: middle;
text-align: center;
background: #ffff00;
}
HTML:
<body>
<div id="all">
<div class="ff-valign-wrap">
<div class="ff-valign">
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Amet, animi autem doloribus earum expedita, ipsum laboriosam nostrum nulla officiis optio quam quis quod sunt tempora tenetur veritatis vero voluptatem voluptates?</p>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Amet, animi autem doloribus earum expedita, ipsum laboriosam nostrum nulla officiis optio quam quis quod sunt tempora tenetur veritatis vero voluptatem voluptates?</p>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Amet, animi autem doloribus earum expedita, ipsum laboriosam nostrum nulla officiis optio quam quis quod sunt tempora tenetur veritatis vero voluptatem voluptates?</p>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Amet, animi autem doloribus earum expedita, ipsum laboriosam nostrum nulla officiis optio quam quis quod sunt tempora tenetur veritatis vero voluptatem voluptates?</p>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Amet, animi autem doloribus earum expedita, ipsum laboriosam nostrum nulla officiis optio quam quis quod sunt tempora tenetur veritatis vero voluptatem voluptates?</p>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Amet, animi autem doloribus earum expedita, ipsum laboriosam nostrum nulla officiis optio quam quis quod sunt tempora tenetur veritatis vero voluptatem voluptates?</p>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Amet, animi autem doloribus earum expedita, ipsum laboriosam nostrum nulla officiis optio quam quis quod sunt tempora tenetur veritatis vero voluptatem voluptates?</p>
</div>
</div>
</div>
</body>
Le contenu peut être facilement centré en utilisant flexbox. Le code suivant montre le CSS du conteneur à l'intérieur duquel le contenu doit être centré:
.absolute-center {
display: -ms-flexbox;
display: -webkit-flex;
display: flex;
-ms-flex-align: center;
-webkit-align-items: center;
-webkit-box-align: center;
align-items: center;
}
Je trouve celui-ci le plus utile. Il donne la mise en page "H" la plus précise et est très simple à comprendre.
L'avantage de ce balisage est que vous définissez la taille de votre contenu à un seul endroit -> "PageContent".
Les couleurs du fond de la page et ses marges horizontales sont définies dans les div correspondants.
<div id="PageLayoutConfiguration"
style="display: table;
position:absolute; top: 0px; right: 0px; bottom: 0px; left: 0px;
width: 100%; height: 100%;">
<div id="PageBackground"
style="display: table-cell; vertical-align: middle;
background-color: purple;">
<div id="PageHorizontalMargins"
style="width: 100%;
background-color: seashell;">
<div id="PageContent"
style="width: 1200px; height: 620px; margin: 0 auto;
background-color: grey;">
my content goes here...
</div>
</div>
</div>
</div>
Et ici avec CSS séparé:
<div id="PageLayoutConfiguration">
<div id="PageBackground">
<div id="PageHorizontalMargins">
<div id="PageContent">
my content goes here...
</div>
</div>
</div>
</div>
#PageLayoutConfiguration{
display: table; width: 100%; height: 100%;
position:absolute; top: 0px; right: 0px; bottom: 0px; left: 0px;
}
#PageBackground{
display: table-cell; vertical-align: middle;
background-color: purple;
}
#PageHorizontalMargins{
style="width: 100%;
background-color: seashell;
}
#PageContent{
width: 1200px; height: 620px; margin: 0 auto;
background-color: grey;
}
Cette solution a fonctionné pour moi si vous avez un élément de bloc (par exemple). J'ai utilisé les couleurs pour rendre la solution plus claire.
HTML:
<main class="skin_orange">
<p>As you can the the element/box is vertically centered</p>
<div class="bigBox skin_blue">Blue Box</div>
</main>
CSS:
main {
position: relative;
width: 400px;
height: 400px;
}
.skin_orange {
outline: thin dotted red;
background: orange;
}
.bigBox {
width: 150px;
height: 150px;
position: absolute;
top: 50%;
transform: translateY(-50%);
}
.skin_blue {
background-color: blue;
}
Ce qui suit fonctionne dans mon cas et a été testé dans Firefox.
#element {
display: block;
transform: translateY(50%);
-moz-transform: translateY(50%);
-webkit-transform: translateY(50%);
-ms-transform: translateY(50%);
}
La hauteur de la div et la hauteur du parent sont dynamiques. Je l'utilise lorsqu'il y a d'autres éléments sur le même parent qui sont plus élevés que l'élément cible, où les deux sont positionnés horizontalement en ligne.
Faites-le simplement: Ajoutez la classe à votre div
:
.modal {
margin: auto;
position: absolute;
top: 0;
right: 0;
left: 0;
bottom: 0;
height: 240px;
}
Et lisez cet article pour une explication. Remarque: Height
est nécessaire.
Vertical & Horizontal CENTER
HTML
<div id="dialog">Centered Dialog</div>
CSS
#dialog {
position:fixed; top:50%; left:50%; z-index:99991;
width:300px; height:60px;
margin-top:-150px; /* half of the width */
margin-left:-30px; /* half of the height */}
Prendre plaisir!
La meilleure chose à faire serait:
#vertalign{
height: 300px;
width: 300px;
position: absolute;
top: calc(50vh - 150px);
}
150 pixels parce que c'est la moitié de la hauteur de la div dans ce cas.
Je viens de trouver un autre moyen qui a fonctionné pour moi:
<div class="container">
<div class="vertical">
<h1>Welcome</h1>
<h2>Aligned Vertically</h2>
<a href="#">Click ME</a>
</div>
</div>
.vertical{
top: 50%;
-webkit-transform: translateY(-50%);
-ms-transform: translateY(-50%);
transform: translateY(-50%);
}
Déclarez ce Mixin:
@mixin vertical-align($position: relative) {
position: $position;
top: 50%;
-webkit-transform: translateY(-50%);
-ms-transform: translateY(-50%);
transform: translateY(-50%);
}
Ensuite, incluez-le dans votre élément:
.element{
@include vertical-align();
}
C'est de loin l'approche la plus simple, elle fonctionne également sur les éléments non bloquants. Le seul inconvénient est qu'il s'agit de la Flexbox. Par conséquent, les navigateurs plus anciens ne la prendront pas en charge.
<div class="sweet-overlay">
<img class="centered" src="http://jimpunk.com/Loading/loading83.gif" />
</div>
Lien vers codepen:
http://codepen.io/damianocel/pen/LNOdRp
Le point important ici est que, pour le centrage vertical, nous devons définir un élément parent (conteneur) et img doit avoir une hauteur inférieure à celle de l’élément parent.
Cette méthode n'utilise aucune transformation. Donc, il n'y a pas de problème avec la sortie devient floue.
position: absolute;
width: 100vw;
top: 25%;
bottom: 25%;
text-align: center;
En utilisant la propriété transform
, nous pouvons facilement créer un div verticalement centré.
.main-div {
background: none repeat scroll 0 0 #999;
font-size: 18px;
height: 450px;
max-width: 850px;
padding: 15px;
}
.vertical-center {
background: none repeat scroll 0 0 #1FA67A;
color: #FFFFFF;
padding: 15px;
position: relative;
top: 50%;
transform: translateY(-50%);
-moz-transform: translateY(-50%);
-webkit-transform: translateY(-50%);
-ms-transform: translateY(-50%);
-o-transform: translateY(-50%);
}
<div class="main-div">
<div class="vertical-center">
<span>"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."</span>
</div>
</div>