Center Element Using CSS

Suprabha - Aug 24 '20 - - Dev Community

Centering an element horizontally and vertically is a very common interview question. Suppose there is a parent element surrounding the child element:

<div class="parent">
    <div class="child">hello world</div>
</div>
Enter fullscreen mode Exit fullscreen mode

Different ways to align an element to the center of the page:

  1. Using Flex
  2. Using Grid
  3. Using position absolute
  4. Using Table
  5. Using writing-mode
  6. Using Table tag
  7. Using margin auto

1️⃣ Using Flex ⭐️

Flexbox control how items are placed and how empty space is distributed in ways that would have required either magic numbers in CSS for a specific number of elements.

Depending on the flex-direction, we might use justify-content or align-items to adjust as needed.

.parent {
    height: 100%;
    display: flex;
    align-items: center;
    justify-content: center;
}
Enter fullscreen mode Exit fullscreen mode

2️⃣ Using Grid ⭐️

CSS Grid includes pretty much the same alignment options as flexbox, so we can use it on the parent:

.parent {
    height: 100vh;
    display: grid;
    place-items: center;
}
Enter fullscreen mode Exit fullscreen mode

OR

.parent {
    height: 100vh;
    display: grid;
    align-items: center;
    justify-content: center;
}
Enter fullscreen mode Exit fullscreen mode

3️⃣ Using position absolute

A simple old trick using position absolute.

.parent {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
}
Enter fullscreen mode Exit fullscreen mode

4️⃣ Using Table ⎍

A really simple approach and one of the first (back in the day, everything was tables), is using the behavior of table cells and vertical-align to center an element on the container.

.parent {
    width: 100vw;
    height: 100vh;
    display: table;
}

.child {
    display: table-cell;
    vertical-align: middle;
    text-align: center;
}
Enter fullscreen mode Exit fullscreen mode

5️⃣ Using writing-mode ✍

writing-mode can change the display direction of the text. For example, you can use writing-mode to change the display direction of the text to the vertical direction.

.parent {
    writing-mode: vertical-lr;
    text-align: center;
    height: 100vh;
}

.child {
    writing-mode: horizontal-tb;
    display: inline-block;
    width: 100%;
}
Enter fullscreen mode Exit fullscreen mode

6️⃣ Using Table tag 🏷

You can also use table tag.

<table>
    <tbody>
        <tr>
            <td class="father">
                <div class="child">hello world</div>
            </td>
        </tr>
   </tbody>
</table>
Enter fullscreen mode Exit fullscreen mode
table {
    height: 100vh;
    width: 100%;
}

.father {
    text-align: center;
}
Enter fullscreen mode Exit fullscreen mode

7️⃣ Using margin auto

Applying margin-auto on a parent flex.

.parent {
    display: flex;
    height: 100vh;
}

.child {
    margin: auto;
}
Enter fullscreen mode Exit fullscreen mode

Best way I used are display flex(1) and display grid(2).

Thanks for reading the article.

I hope you learnt something from this article. Also, let me know if there is any other way to bring the element at the center of the page 😅.

Please feel free to ping me on @suprabhasupi 😋

🌟 Twitter 👩🏻‍💻 Suprabha.me 🌟 Instagram
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .