When you need to center an image inside a <div>
tag, you can apply the text-align:center
CSS property to the <div>
tag.
Suppose you have the following HTML document:
<div>
<img src="image.jpeg">
</div>
Then you can write the following CSS rule in your stylesheet file or inside the <style>
tag:
.center {
text-align: center;
}
Then, you need to add the class into the <div>
tag that contains the <img>
tag.
This will be enough to center the image:
<div class="center">
<img src="image.jpeg">
</div>
The browser output will be as shown below:
But using text-align:center
is not the only way to center an image horizontally inside a <div>
tag, as you’ll see in the next section.
Center an image using flexbox model or CSS grid
Alternatively, you can also use the flexbox model CSS rule to center an image inside a <div>
tag as shown above.
The following CSS rule will work like the text-align:center
style:
.center {
display: flex;
justify-content: center;
}
You can replace the display:flex
property with display:grid
property to use CSS grid and achieve the same goal.
Center an image vertically in a div
Before you can center an image vertically inside a <div>
tag, you need to apply either flex
or grid
display model to your <div>
tag.
Once you apply the display
property, then you can add the align-items: center
property to the <div>
tag.
You also need to add the height
property to the CSS rule so that the image will be placed in the middle of the <div>
element height.
The following CSS rule will center your image both horizontally and vertically in the <div>
:
.center {
display: flex;
justify-content: center;
align-items: center;
height: 500px;
}
The output will be as follows. Notice how there’s a space at the top and the bottom of the image marked by the blue bar:
You can use CSS grid by replacing display:flex
property above with display:grid
.
If you want to center an image only vertically, then you can remove the justify-content:center
property.
Here are reusable CSS class rules that you can add to your stylesheet:
.center-h {
display: flex;
justify-content: center;
}
.center-v {
display: flex;
align-items: center;
}
.h-500 {
height: 500px;
}
The center-h
class stands for center horizontal while center-v
stands for center vertical.
By writing display:flex
in both selectors, the classes will be self-sufficient for their styling purposes.
The h-500
is for adding the height to the <div>
tag for centering horizontally. You can replace this with any other height value you need, such as h-1000
or h-800
.
Now you can add the right class above to the <div>
tag anytime you want to center its content:
<div class="center-h center-v h-500"></div>
<!-- or -->
<div class="center-h"></div>
<!-- or -->
<div class="center-v h-500"></div>
And that’s how you can center an image inside a <div>
tag with CSS 😉