How to Center a Div Vertically with HTML and CSS

Introduction

Centering a div vertically on a webpage is a common task in web design. While it may seem tricky at first, CSS offers multiple ways to achieve vertical alignment, and it’s important to choose the right method based on your layout needs.

In this tutorial, you'll learn three easy and effective methods to vertically center a div using Flexbox, CSS Grid, and positioning with transforms.

Method 1: Center a Div Vertically Using Flexbox

Flexbox provides a quick and efficient way to center elements both horizontally and vertically within a container.

HTML and CSS Example

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Center a Div Vertically with Flexbox</title>
    <style>
        .flex-container {
            display: flex;
            justify-content: center; /* Centers horizontally */
            align-items: center;     /* Centers vertically */
            height: 100vh;           /* Full viewport height */
            background-color: #f0f0f0;
        }

        .centered-div {
            width: 200px;
            padding: 20px;
            background-color: #3498db;
            color: white;
            text-align: center;
        }
    </style>
</head>
<body>

    <div class="flex-container">
        <div class="centered-div">I'm centered vertically!</div>
    </div>

</body>
</html>

Explanation

  • align-items: center: Vertically centers the div inside the flex container.
  • justify-content: center: Horizontally centers the div for a complete centering effect.
  • height: 100vh: Ensures the container takes up the full height of the viewport.

Method 2: Center a Div Vertically Using CSS Grid

CSS Grid is another straightforward method for centering elements. With just a few lines of code, you can center your div both vertically and horizontally.

HTML and CSS Example

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Center a Div Vertically with CSS Grid</title>
    <style>
        .grid-container {
            display: grid;
            place-items: center; /* Centers both horizontally and vertically */
            height: 100vh;
            background-color: #f4f4f4;
        }

        .centered-div {
            width: 200px;
            padding: 20px;
            background-color: #e74c3c;
            color: white;
            text-align: center;
        }
    </style>
</head>
<body>

    <div class="grid-container">
        <div class="centered-div">I'm centered with CSS Grid!</div>
    </div>

</body>
</html>

Explanation

  • place-items: center: Centers the div both vertically and horizontally in a grid container.
  • height: 100vh: Ensures the grid container takes up the full height of the viewport.

Method 3: Center a Div Vertically Using Positioning and Transforms

This method combines absolute positioning and CSS transforms to center a div vertically within its container.

HTML and CSS Example

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Center a Div Vertically with Positioning</title>
    <style>
        .container {
            position: relative;
            height: 100vh;
            background-color: #f0f0f0;
        }

        .centered-div {
            position: absolute;
            top: 50%;
            left: 50%;
            transform: translate(-50%, -50%);
            width: 200px;
            padding: 20px;
            background-color: #2ecc71;
            color: white;
            text-align: center;
        }
    </style>
</head>
<body>

    <div class="container">
        <div class="centered-div">I'm centered using positioning!</div>
    </div>

</body>
</html>

Explanation

  • top: 50%; left: 50%;: Moves the div to the center of the container.
  • transform: translate(-50%, -50%);: Offsets the div by half its width and height to ensure perfect centering.

Conclusion

In this tutorial, we covered three simple methods to vertically center a div in CSS: Flexbox, CSS Grid, and positioning with transforms. Flexbox and Grid are easy and efficient for modern layouts, while positioning works well for custom designs. Choose the method that best fits your project!

Comments