Skip to content Skip to sidebar Skip to footer

Centering Page Content Vertically

I know how I can horizontally center the entire page with CSS. But is there a way to vertically center the page? Something like this...

Solution 1:

You can also hijack CSS's display: table and display: table-cell for this purpose. The HTML would be like this:

<body><divid="body"><!-- Content goes here --></div></body>

And the CSS:

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

If you want horizontal centering as well, then add this:

#body {
    max-width: 1000px; /* Or whatever makes sense for you. */margin: 0 auto;
}

Some would call this an abuse of CSS but:

  • It will work exactly the same pretty much everywhere.
  • Requires minimal markup and styling.
  • And CSS's vertical alignment deserves a bit of abuse; vertical alignment shouldn't require the hacking, contortions, and absolute sizing that it does.

References:

Solution 2:

There's a great article in MicroTut to do that http://tutorialzine.com/2010/03/centering-div-vertically-and-horizontally/

Centering with CSS:

.className{
    width:300px;
    height:200px;
    position:absolute;
    left:50%;
    top:50%;
    margin:-100px00 -150px;
}

Centering with JQuery:

$(window).resize(function(){

    $('.className').css({
        position:'absolute',
        left: ($(window).width() - $('.className').outerWidth())/2,
        top: ($(window).height() - $('.className').outerHeight())/2
    });

});

// To initially run the function:
$(window).resize();

And you can see a demo here

Post a Comment for "Centering Page Content Vertically"