Different Ways to Center a Div in HTML, CSS, and JavaScript

By Maulik Paghdal

21 Jul, 2024

Different Ways to Center a Div in HTML, CSS, and JavaScript

Introduction

Centering elements, especially a div, is one of the most common tasks in web development. It may sound simple, but with the variety of methods available, choosing the best approach can be tricky. This blog explores different ways to center a div horizontally, vertically, or both using HTML, CSS, and JavaScript.


1. Using Flexbox

Flexbox is one of the easiest ways to center a div both horizontally and vertically.

Example

<div class="flex-container">
  <div class="centered">Centered Div</div>
</div>

<style>
  .flex-container {
    display: flex;
    justify-content: center; /* Horizontal centering */
    align-items: center;    /* Vertical centering */
    height: 100vh;          /* Full viewport height */
  }
  .centered {
    width: 100px;
    height: 100px;
    background-color: lightblue;
  }
</style>

2. Using CSS Grid

CSS Grid provides another straightforward way to center a div.

Example

<div class="grid-container">
  <div class="centered">Centered Div</div>
</div>

<style>
  .grid-container {
    display: grid;
    place-items: center; /* Centers both horizontally and vertically */
    height: 100vh;
  }
  .centered {
    width: 100px;
    height: 100px;
    background-color: lightgreen;
  }
</style>

3. Using Positioning and Transforms

The combination of position: absolute and transform allows you to center a div.

Example

<div class="position-container">
  <div class="centered">Centered Div</div>
</div>

<style>
  .position-container {
    position: relative;
    height: 100vh;
  }
  .centered {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%); /* Center the div */
    width: 100px;
    height: 100px;
    background-color: lightcoral;
  }
</style>

4. Using Text Alignment (Horizontal Only)

For horizontal centering, you can use text-align.

Example

<div class="text-align-container">
  <div class="centered">Centered Div</div>
</div>

<style>
  .text-align-container {
    text-align: center; /* Centers the child horizontally */
  }
  .centered {
    display: inline-block; /* Necessary for text-align */
    width: 100px;
    height: 100px;
    background-color: lightgoldenrodyellow;
  }
</style>

5. Using JavaScript for Centering

JavaScript can be used to dynamically center a div.

Example

<!-- Html -->
<div id="container">
  <div id="centered">Centered Div</div>
</div>
/* CSS */
  #container {
    position: relative;
    height: 100vh;
  }
  #centered {
    position: absolute;
    background-color: lightpink;
    width: 100px;
    height: 100px;
  }
// javascript
  const container = document.getElementById('container');
  const centered = document.getElementById('centered');

  function centerDiv() {
    const containerHeight = container.clientHeight;
    const containerWidth = container.clientWidth;

    centered.style.top = (containerHeight - centered.offsetHeight) / 2 + 'px';
    centered.style.left = (containerWidth - centered.offsetWidth) / 2 + 'px';
  }

  // Call function on page load
  window.onload = centerDiv;

  // Recalculate on resize
  window.onresize = centerDiv;

6. Using Table Layout

This method mimics the table-cell behavior to achieve vertical and horizontal centering.

Example

<div class="table-container">
  <div class="centered">Centered Div</div>
</div>

<style>
  .table-container {
    display: table;
    width: 100%;
    height: 100vh;
    text-align: center; /* Horizontal centering */
  }
  .centered {
    display: table-cell;
    vertical-align: middle; /* Vertical centering */
    background-color: lightsteelblue;
    width: 100px;
    height: 100px;
  }
</style>

7. Using Line Height (For Text)

This method is specific to centering text inside a div.

Example

<div class="line-height-container">
  Centered Text
</div>

<style>
  .line-height-container {
    height: 100px;
    line-height: 100px; /* Matches the height */
    text-align: center; /* Horizontal centering */
    background-color: lightcyan;
  }
</style>

Conclusion

From modern CSS methods like Flexbox and Grid to traditional techniques like positioning and JavaScript, there are multiple ways to center a div in your projects. The best method depends on your use case, browser support, and personal preference. Start with Flexbox or Grid for simplicity and explore others as needed.

Happy centering! ✨