How to center a div vertically and horizontally (modern methods, without fixed size!)
“How to center a div” (inside another div or inside the body itself) is one of the most discussed questions ever, and to my surprise there are masses of tutorials which totally over-complicated this issue, usually also with lots of disadvantages, like a fixed height and width of the content div. However, there’s a simple, non-hacky, clean, responsive-ready and crossbrowser-safe method that also does not need any fixed pixel size div settings:
- Totally crossbrowser-safe. Works in all browsers (IE8 and higher).
- Totally liquid, no div size needed
- Totally clean, no weird hacks. All code is used the way it should be used.
Method 1:
Center a div in the middle of the viewport
CSS
html, body { margin: 0; padding: 0; width: 100%; height: 100%; display: table; } .container { display: table-cell; text-align: center; vertical-align: middle; } .content { background-color: red; /* just for the demo */ display: inline-block; text-align: left; }
HTML
<div class="container"> <div class="content"> content content content <br/> moooooooooooooooore content <br/> another content </div> </div>
Result
See the JSFiddle here: http://jsfiddle.net/panique/pqDQB/35/
Method 2:
Center div vertically and horizontally inside an other div
This is very useful for situation when you have to center content inside a div that don’t have a certain pixel size. Please note that this really doesn’t need ANY pixel size definition. For demo purposes we give the parent div demo pixel sizes, just to create a visible example.
CSS
.parent { display: table; /* optional, just for the demo */ height: 300px; background: yellow; } .child { display: table-cell; vertical-align: middle; /* optional, just for the demo */ background: red; } .content { /* optional, just for the demo */ background: blue; }
HTML
Result
See the Pen baity by Panique (@Panique) on CodePen.