How to Vertically Align Elements in a Div
Sometimes centering elements vertically with CSS can cause some troubles. However, there are a few ways allowing to center elements in a <div>.
Here, we’ll discuss some possible ways which are easy to implement if you follow the steps described below.
Create HTML
- Create two divs with the following id : "blue" and "green".
<!DOCTYPE html>
<html>
<head>
<title>Title of the document</title>
</head>
<body>
<h1>Vertically aligned element</h1>
<div id="blue">
<div id="green"></div>
</div>
</body>
</html>
Add CSS
For block elements, vertical alignment of elements is difficult and depends on the situation. If a child element can have a fixed height, you can add position: absolute and specify its top, height, margin-top, position.
- Use the position property with the “relative” value for the parent element to place it relative to its normal position.
- Use the position property with the “absolute” value for the child element to place it relative to its positioned parent element.
- Add the height, margin-top, top, border, and width properties.
#blue {
position: relative;
}
#green {
position: absolute;
top: 50%;
height: 100px;
margin-top: -50px;
}
#blue {
border: 2px solid #1C87C9;
height: 10em;
}
#green {
border: 1px solid #8EBF42;
width: 100%;
}
Here is the result of our code.
Example of aligning an element vertically in a div with the position property:
<!DOCTYPE html>
<html>
<head>
<title>Title of the document</title>
<style>
#blue {
position: relative;
}
#green {
position: absolute;
top: 50%;
height: 100px;
margin-top: -50px;
}
#blue {
border: 2px solid #1C87C9;
height: 10em;
}
#green {
border: 1px solid #8EBF42;
width: 100%;
}
</style>
</head>
<body>
<h1>Vertically aligned element</h1>
<div id="blue">
<div id="green"></div>
</div>
</body>
</html>
Result
Another method is to use the line-height property with a value equal to the height property. This is a method to use when a centered element consists of a single line, and the height of its parent is fixed.
Example of aligning an element vertically in a div with the line-height property:
<!DOCTYPE html>
<html>
<head>
<title>Title of the document</title>
<style>
p {
margin: 0;
}
#outer {
border: 2px solid #5c34eb;
height: 100px;
line-height: 100px;
}
</style>
</head>
<body>
<h1>Vertically aligned element</h1>
<div id="outer">
<p>Lorem Ipsum</p>
</div>
</body>
</html>
Let’s see how we can align an element in a div with the padding property. To make this method work, we’ll need to set top and bottom paddings on the outer element.
Example of aligning an element vertically in a div with the CSS padding property:
<!DOCTYPE html>
<html>
<head>
<title>Title of the document</title>
<style>
.center {
padding: 60px 0;
border: 2px solid #5c34eb;
}
</style>
</head>
<body>
<h1>Vertically aligned element</h1>
<div class="center">
<p>Lorem Ipsum.</p>
</div>
</body>
</html>
There is also one more method to align elements vertically. You can use the vertical-align property, which commonly applies to inline, inline-block, and table-cell elements. But it cannot be used to align block-level elements vertically. Earlier, it was used with the valign attribute, but now this attribute is deprecated. Instead, you can use vertical-align: middle.