<div class="flex-container">
    <div class="item">Item-1</div>
    <div class="item">Item-2</div>
    <div class="item">Item-3</div>
    <div class="item">Item-4</div>
    <div class="item">Item-5</div>
    <div class="item">Item-6</div>
    <div class="item">Item-7</div>
    <div class="item">Item-8</div>
</div>
.flex-container {
    display: flex; /* 플렉스 컨테이너 생성 */
    border: 4px solid silver;
    flex-wrap: wrap;
    row-gap: /* value <= 라이브 데모에서 동적으로 구현 */
}
.item { /* 플렉스 아이템 */
    width: 33.33333%;
    border: 4px solid blue;
    background-color: yellow;
}
/*
 * 일부 스타일 코드는 가독성을 위해 생략했습니다!
*/
CSS 데모: flexbox의 row-gap 데모 버튼을 클릭해 보세요!
selector {
    row-gap: normal | <길이> | <백분율(%)>
}
row-gap: normal; /* 초깃값. 레이아웃에 따라 계산되는 기본값 (flexbox에서는 0px) */

/* <길이> 값 */
row-gap: 0;
row-gap: 10px;
row-gap: 3vw;
row-gap: 2rem;
row-gap: 2em;

/* <백분율(%)> 값 */
row-gap: 5%;
row-gap: 20%;

/* 글로벌 값 */
row-gap: inherit;
row-gap: initial;
row-gap: revert;
row-gap: revert-layer;
row-gap: unset;
<div class="flex-container">
    <div class="item">Item-1</div>
    <div class="item">Item-2</div>
    <div class="item">Item-3</div>
    <div class="item">Item-4</div>
    <div class="item add-margin-item">Item-5</div>
    <div class="item">Item-6</div>
    <div class="item add-margin-item">Item-7</div>
    <div class="item">Item-8</div>
</div>
.flex-container { /* 플렉스 컨테이너 */
    display: flex;
    flex-wrap: wrap;
    align-items: flex-start;
    row-gap: 10px;
    border: 4px solid silver;
    width: 300px;
}
.item { /* 플렉스 아이템 */
    width: 33.33333%;
    border: 4px solid blue;
    background-color: yellow;
}
.item.add-margin-item {
    background-color: red;
    margin-top: 20px;
}
실제 적용된 모습