Skip to content Skip to sidebar Skip to footer

Center Div Vertically And Horizontally Without Defined Height

I want to display a div in the centre of my page without having to define a set height for the element so that the height fits the content of the page dynamically. Is this possible

Solution 1:

You could do it by set top:50%; and transform: translateY(-50%); to .card

JSFiddle - DEMO or Full Screen View

CSS:

html, body {
    height:100%;
    margin: 0px;
}
.card {
    background-color: #1d1d1d;
    /* IE fallback */background-color: rgba(29, 29, 29, 0.95);
    color: #fff;
    padding: 30px35px;
    outline: 2px solid #3B3A37;
    outline-offset: -9px;
    width: 320px;
    position: relative;
    margin: 0 auto;
    top:50%;
    -webkit-transform: translateY(-50%);
    -ms-transform: translateY(-50%);
    -moz-transform: translateY(-50%);
    -o-transform: translateY(-50%);
    transform: translateY(-50%);
}

For more info:

Solution 2:

If you want a CSS only solution without specifying height:

  • You can use css3 flexbox:

    body {
      display:flex;
      align-items:center;
    }
    

    Updated Fiddle

  • Or you can use the translate technique:

    .card {
      position: absolute;
      top: 50%;
      left:50%;
      transform: translateX(-50%) translateY(-50%);
      /* other styles */
    }
    

    Updated Fiddle

browser support:

Side note: You might need js fallbacks if you want to support old browsers

Post a Comment for "Center Div Vertically And Horizontally Without Defined Height"