JSFiddle - React, Tailwind, and code Playground

by Ed Bulikyan

HTML

<div class="container">
  <div class="item"></div>
  <div class="item"></div>
  <div class="item"></div>
  <div class="item"></div>
  <div class="item"></div>
  <div class="item"></div>
  <div class="item"></div>
  <div class="item"></div>
  <div class="item"></div>
</div>

SCSS

body {
  padding: 0;
  margin: 0;
}

.container {
  display: flex;
  flex-wrap: wrap;
  align-items: stretch;
  justify-content: center;
  flex-direction: row;
  height: 100vh;
  font-size: 0;
  
  /* if last element is not centrilized */
  &:after {
    content: '';
    display: block;
    flex: 1 1 auto;
  }
}

.item {
  flex: 0 0 25%;
  background-color: #f00;
  border: 1px solid lime;
  box-sizing: border-box;
  
  @media (min-aspect-ratio: 8/5) {
    flex: 0 0 25%;  
  }
  @media (max-aspect-ratio: 3/2) {
    flex: 0 0 33.3333333333%;
  }
  @media (aspect-ratio: 1/1) {
    flex: 0 0 50%;
  }
}