Create different aspect ratio div with CSS

Modern deisgn wants to have boxes of different aspect ratios to render the media properly, for example, Instagram has 1:1 square box grid, while Youtube uses 16:9 box to view the videos, on the mobile devices we have 4:3 or 8:5.

In this article, we will see how we can create different aspect ratio div with CSS.

Using aspect-ratio CSS property

The most straightforward way is by using the aspect-ratio CSS property that works in all the modern browsers. This creates box of different aspect-ratio, all you have to do is define the width and the height will be adjusted.

<div class="container">
    <div class="box">
      <div class="text">1:1 Aspect ratio</div> 
    </div>
</div>
.container {
  background-color: #e91e63;
  position: relative;
  width: calc((100% / 3) - 2px);
}

.box{
  position: relative;
  width: 100%;
  aspect-ratio: 1/1;
}

Example 1:1 aspect ratio box using CSS

Using padding-top CSS property

If you want to support older browser and they would like to use the padding-top CSS property to create different aspect-ratio div.

For the padding-top, you can use this mathematical calculation, h/(w/100), to determine the percentage to aspect-ratio and vice versa.

For example, in the 16:9 ratio, 16 is width and 9 is height, putting that in the formula, we get 9 / (16 / 100) = 9 / 0.16 = 56.25%.

<div class="container">
    <div class="box">
      <div class="text">1:1 Aspect ratio</div> 
    </div>
</div>
.container {
  background-color: #e91e63;
  position: relative;
  width: calc((100% / 3) - 2px);
}

.box{
  position: relative;
  width: 100%;
  padding-top: 100%;
}

Example 1:1 aspect ratio box using CSS

Here is a list of the common ones aspect-ratio to padding-top percentage conversion.

Aspect-ratio Percentage Value
16:9 56.25%
4:3 75%
3:2 66.66%
8:5 62.5%