How to Center a Div, Text, and More with CSS
The most difficult thing a web developer has to do is center a div horizontally and vertically using CSS. There are 100 ways to get the job done but there are some popular ways like using flex, grid, and making position absolute. In this article, as we go ahead we will discuss these top 3 ways in detail.
Introduction
One of the important elements of HTML is div. A div is just an invisible box that can contain any kind of content. Divs basically don’t have anything unique but that makes them extremely versatile most websites use lots of divs nested and complex to organize the content of the size. Although they are invisible developers use them for styling purposes.
So it becomes extremely important to center these divs. That there are many ways most popular ones are as making position absolute, display flex, and display grid. Here is the HTML code for the example I am going to provide the codedamn playground links to each example. So that you can go there and check it out.
How to center Horizontally
To center an element horizontally, you can use the margin
property with a value of auto
:
.image{
width: 50px;
height: 50px;
margin: 0 auto;
}
Code language: CSS (css)
You can also use the display
property with a value of flex
and the justify-content
property with a value of center
to center block-level elements that contain other elements:
.image{
display: flex;
justify-content: center;
}
Code language: CSS (css)
Note that these techniques will only work if the element has a fixed width or if the parent element has a fixed width. If the width of the component is set auto
, it will take up the full width available and will not be centered.
How to Center Text CSS Text-Align
This is one of the simplest ways to center a text, links. This is not for the divs containing images as the name itself suggests this is only for the text
.text{
font-size: x-large;
box-shadow: 1px solid red;
text-align: center;
}
Code language: CSS (css)
Center Property
What is CSS Margin Auto and How Do I Use It?
In CSS, the margin: auto
property can be used to automatically center an element within its parent element.
To use margin: auto
, you will need to specify a width for the element that you want to center. This is because margin: auto
works by dividing the available space within the parent element equally between the left and right margins of the child element, effectively centering it within the parent element.
Here is an example of how you can use margin: auto
to center a div
an element within its parent element:
.image{
width: 50px;
height: 50px;
margin: 0 auto;
}
Code language: CSS (css)
How do I Center a Div Horizontally with Flexbox?
Flexbox is one of the easiest ways to center things. To learn more about the CSS Flexbox you can check out this article. To the center, the div horizontally gives display to flex and justify-content to center. And the syntax for the grid system is also the same
.image{
display: flex;
justify-content: center;
}
Code language: CSS (css)
How to center vertically
How can I Center a Div Vertically with CSS Absolute Positioning and Negative Margins?
To center a div vertically using absolute positioning and negative margins, you can use the following steps:
- Set the position of the parent element to
relative
. This will allow you to position the child element absolutely within the parent element. - Set the position of the child element to
absolute
. - Set the top and left properties of the child element to
50%
. This will position the child element’s top-left corner at the center of the parent element. - Use negative margins to offset the child element. The amount of margin should be half of the child element’s width and height. This will horizontally and vertically center the child element within the parent element.
Here’s an example:
.parent {
position: relative;
width: 500px;
height: 500px;
background-color: lightgray;
}
.child {
position: absolute;
top: 50%;
left: 50%;
width: 200px;
height: 200px;
background-color: lightblue;
margin-top: -100px; /* Half of the child's height */
margin-left: -100px; /* Half of the child's width */
}
Code language: CSS (css)
In this example, the .child
the element will be vertically and horizontally centered within the .parent
element.
Transform and Translate: How to Center a Div Vertically?
Make the position absolute. And set the top value to 50%. Now just use the transform property instead of the negative property. Make translate the x value to zero because we want to align vertically. And the y value to -50%
.image{
position: absolute;
top: 50%;
transform: translate(0, -50%);
}
Code language: CSS (css)
How can a div be centered vertically in Flexbox?
Like we centered the div horizontally. We can also center vertically using the flexbox. The only difference is here we use the align-items property. A lot of people get confused here because the aligned items take the height of the property if not mentioned. So we have to give a height. Now the div will align to half of the size
.image{
height: 100vh;
display: flex;
align-items: center;
}
Code language: CSS (css)
How do I center both vertically and horizontally:
Flexbox
The first and most simple method is by using the flexbox method. It’s just a combination of both the horizontal and vertical methods.
.image{
height: 100vh;
display: flex;
justify-content: center;
align-items: center;
}
Code language: CSS (css)
Centering a Div Vertically and Horizontally With CSS Absolute Positioning
Before flexbox has invited this method is the popular one. First, let’s see the syntax
div {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}
Code language: CSS (css)
This will position the div at the center of the page by setting its position to absolute and then using the top
and left
properties to position the top left corner of the div at the center of the page. The transform
property is then used to move the div back up and to the left by half of its own width and height, effectively centering it on the page.
Centering a div vertically and horizontally with Transform and Translate
To center a div vertically and horizontally using transform and translate, you can use the following technique:
- Set the position of the div to “absolute” and specify a top and left value of “50%”. This will position the div at the center of the container.
- Use the “transform” property to translate the div by half its width and height, so that the center of the div coincides with the center of the container.
Here is an example of how you can do this:
.container {
position: relative; /* This is the container that will hold the centered div */
}
.centered {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%); /* Translate the div by half its width and height */
}
Code language: CSS (css)
Here is the HTML code for the example:
This technique works because the transform property allows you to modify the position, scale, and rotation of an element in the 2D or 3D space. The translate function moves the element by the specified distances in the X and Y directions. By using negative values for the translate function, the element is moved up and to the left by half its width and height, which effectively centers it within the container.
CSS Grid
CSS Grid is the latest way to center a div. It comes with a lot of additional features. If learn more about it visit this article.
Here is an example to center a div with a grid
.grid{
height: 100vh;
display: grid;
grid-template-columns: 1fr;
grid-template-rows: 1fr;
}
.image{
align-self: center;
justify-self: center;
}
Code language: CSS (css)
Here I have created a parent div in which my image div is present. the grid-template-rows
and grid-template-columns
properties are used to create a single-cell grid. The div
element is then placed into the grid cell, align-self
and justify-self
properties are used to center it both horizontally and vertically within the cell.
One thing you have to keep in mind is that the grid is the latest technology. So it is not supported by every browser. If your creating the website with a grid layout make sure you check the browser’s supportability. You can use the above-mentioned methods as they are older ones and supported by each and every browser.
Note that these techniques will only work if the element has a fixed width or if the parent element has a fixed width. If the width of the component is set auto
, it will take up the full width available and will not be centered.
Conclusion
In conclusion, centering elements with CSS can be a useful design technique for creating visually appealing and well-organized layouts. If you utilize the various methods outlined in this blog post, you will be able to easily center divs, text, and other elements on your web page by using the methods outlined in this post.
The techniques described here should help you achieve your desired result no matter if you are trying to center a single element or a group of elements. Make sure you test your code on different browsers and devices in order to ensure that it looks and behaves as you intended it to. With a little bit of practice and experimentation, you’ll be able to align elements with confidence and create professional-looking web pages.
Sharing is caring
Did you like what Thrishank wrote? Thank them for their work by sharing it on social media.
No comments so far
Curious about this topic? Continue your journey with these coding courses: