Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Vertically centering with flexbox

Tags:

html

css

flexbox

I'm trying to center a div on a webpage using flexbox. I'm setting the following CSS properties. I see that it's being centered horizontally, but not vertically.

.flex-container {
    display: flex;
    align-items: center;
    justify-content: center;
}

Here's the fiddle: JSFIDDLE

Can you explain what I'm doing wrong?

like image 816
Zack Avatar asked Jun 05 '26 00:06

Zack


1 Answers

A <div> element without an explicit height defaults to the height of it's contents, as all block elements do. You'd probably want to set it to 100% of it's parent, the <body>, but that's not enough, since that is also a block element. So again, you need to set that to 100% height, to match it's parent, the <html>. And yet again, 100% is still required.

But once all that is done, you get that annoying vertical scroll bar. That's a result of the default margin the body has, and the way the box model is defined. You have several ways you can combat that, but the easiest is to set your margins to 0.

See corrected fiddle.

html, body {
  height: 100%;
  margin: 0px;
}

.flex-container {
	display: flex;
	align-items: center;
    justify-content: center;
    height: 100%;
}

.item {
    background-color: blue;
    height: 50px; 
    width: 50px;
}
<div class="flex-container">
    <div class="item">
    </div>
</div>
like image 121
Amit Avatar answered Jun 06 '26 21:06

Amit



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!