You were on the right track with Grid.
Here are a few options:
grid-auto-rows: auto /* default setting; very simple: nothing to define */
.outerbox {
display: flex;
align-items: center;
justify-content: center;
height: 100vh;
}
.innerbox {
width: 40vh;
height: 40vh;
background-color: #ced9d5;
}
.item {
display: grid;
grid-row-gap: 5px;
height: 100%;
}
.item div {
border: 1px solid black;
}
* {
border: 0;
margin: 0;
padding: 0;
box-sizing: border-box;
}
<div class="outerbox">
<div class="innerbox">
<div class="item">
<div class="item01"></div>
<div class="item02"></div>
<div class="item03"></div>
<div class="item04"></div>
<div class="item05"></div>
<div class="item06"></div>
</div>
</div>
</div>
grid-auto-rows: 1fr
.outerbox {
display: flex;
align-items: center;
justify-content: center;
height: 100vh;
}
.innerbox {
width: 40vh;
height: 40vh;
background-color: #ced9d5;
}
.item {
display: grid;
grid-row-gap: 5px;
height: 100%;
grid-auto-rows: 1fr;
}
.item div {
border: 1px solid black;
}
* {
border: 0;
margin: 0;
padding: 0;
box-sizing: border-box;
}
<div class="outerbox">
<div class="innerbox">
<div class="item">
<div class="item01"></div>
<div class="item02"></div>
<div class="item03"></div>
<div class="item04"></div>
<div class="item05"></div>
<div class="item06"></div>
</div>
</div>
</div>
The solution above is explained here: Equal height rows in CSS Grid Layout
Or you can set the row heights explicitly, like this:
grid-template-rows: repeat(6, 1fr)
.outerbox {
display: flex;
align-items: center;
justify-content: center;
height: 100vh;
}
.innerbox {
width: 40vh;
height: 40vh;
background-color: #ced9d5;
}
.item {
display: grid;
grid-row-gap: 5px;
height: 100%;
grid-template-rows: repeat(6, 1fr); /* distribute the space in the container equally
among six rows */
}
.item div {
border: 1px solid black;
}
* {
border: 0;
margin: 0;
padding: 0;
box-sizing: border-box;
}
<div class="outerbox">
<div class="innerbox">
<div class="item">
<div class="item01"></div>
<div class="item02"></div>
<div class="item03"></div>
<div class="item04"></div>
<div class="item05"></div>
<div class="item06"></div>
</div>
</div>
</div>