Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

vertically center div when body height: 100% without absolute pos

I have this to fill the window:

html, body {
height: 100%;}

then a container also set to height: 100%, how do I vertically center a div with an image without specifying and set height in pixels and without using absolute positioning? Using padding-top: 50%; padding-bottom 50%; isn't working - seems to shift the div depending on device site or browser window.

like image 501
Chris Avatar asked Jan 11 '23 10:01

Chris


2 Answers

You can use display:table and display:table-cell:

html, body {
    width: 100%;
    height: 100%;
}

body{
    margin: 0;
    display: table
}

body>div {
    display: table-cell; 
    text-align: center; /* horizontal */
    vertical-align: middle; /* vertical */
}
<div>
    <img src="http://paw.princeton.edu/issues/2012/07/11/pages/6994/C-beer.jpg" />
</div>

JSFiddle

More on display property .

like image 111
Vucko Avatar answered May 01 '23 16:05

Vucko


today, display:table and table-cell make it easy, you can have tags to react as a <table> would. basicly :

html, body {
    height: 100%;
    width: 100%;
    margin: 0;
}
html {
    display: table;
}
body {
    display: table-cell;
    vertical-align: middle;
}

whatever will be in body will be vertical-align in the middle. for text a small box , use text-align on body or margin : auto. you can transfer display to body and div instead html and body.

like image 29
G-Cyrillus Avatar answered May 01 '23 17:05

G-Cyrillus