How to horizontally center a <div> in another <div>? I managed to center horizontally using styling from the accepted answer. How can I also center it vertically? The inner div is of an unknown height.
Asked
Active
Viewed 892 times
2 Answers
7
From: http://www.jakpsatweb.cz/css/css-vertical-center-solution.html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html>
<head>
<title>Universal vertical center with CSS</title>
<style>
.greenBorder {border: 1px solid green;} /* just borders to see it */
</style>
</head>
<body>
<div class="greenBorder" style="display: table; height: 400px; #position: relative; overflow: hidden;">
<div style=" #position: absolute; #top: 50%;display: table-cell; vertical-align: middle;">
<div class="greenBorder" style=" #position: relative; #top: -50%">
any text<br>
any height<br>
any content, for example generated from DB<br>
everything is vertically centered
</div>
</div>
</div>
</body>
</html>

Parker
- 8,539
- 10
- 69
- 98
0
Here's a cool technique for centering a box both vertically and horizontally :
The outher container
- should have
display: table;
The inner container
- should have
display: table-cell;
- should have
vertical-align: middle;
- should have
text-align: center;
The content box
- should have
display: inline-block;
- should re-adjust the horizontal text-alignment to eg.
text-align: left;
ortext-align: right;
, unless you want text to be centered
The elegance of this technique, is that you can add your content to the content box without worrying about its height or width!
Just add your content to the content box.
Demo
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">
<p>You can put anything here</p>
<p>Yes, really anything!</p>
</div>
</div>
</div>
See also this Fiddle!

John Slegers
- 45,213
- 22
- 199
- 169