Centering an element with CSS can sometimes be tricky, but with modern CSS techniques, it has become much easier. In this blog post, I will guide you through the different ways to center elements using CSS, both horizontally and vertically.
Center Horizontally
Text
To center text horizontally, simply set the text-align
property to center
:
p {
text-align: center;
}
Blocks
For non-text elements, the preferred way to center them horizontally is by using Flexbox:
#mysection {
display: flex;
justify-content: center;
}
This will center any element inside #mysection
horizontally.
[image: flexbox-horizontal-center.png]
Alternatively, if you prefer not to use Flexbox, you can center non-text elements by applying an automatic margin to the left and right, and setting the width of the element:
section {
margin: 0 auto;
width: 50%;
}
The margin: 0 auto;
shorthand is equivalent to:
section {
margin-top: 0;
margin-bottom: 0;
margin-left: auto;
margin-right: auto;
}
Just remember to set the item to display: block
if it’s an inline element.
Center Vertically
Centering an element vertically has traditionally been more challenging. However, with Flexbox, it has become much simpler:
#mysection {
display: flex;
align-items: center;
}
This will vertically center any element inside #mysection
.
[image: flexbox-vertical-center.png]
Center Both Vertically and Horizontally
You can combine Flexbox techniques to center an element both vertically and horizontally:
#mysection {
display: flex;
align-items: center;
justify-content: center;
}
This will completely center an element in the page, both vertically and horizontally.
[image: flexbox-center.png]
You can achieve the same result using CSS Grid:
body {
display: grid;
place-items: center;
height: 100vh;
}
I hope this guide has helped you understand how to center elements with CSS. With modern techniques like Flexbox and CSS Grid, centering elements has become much more accessible. Give them a try and see how they can simplify your CSS centering needs.