CSS 데모: flexbox의 gap 데모 버튼을 클릭해 보세요!
플렉스 아이템 사이의 행(row)과 열(colunm) 간격을 한 번에 지정할 수 있습니다.
<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 class="item">Item-9</div>
</div>
.flex-container {
    display: flex; /* 플렉스 컨테이너 생성 */
    border: 4px solid silver;
    flex-wrap: wrap;
    gap: /* value <= 라이브 데모에서 동적으로 구현 */;
}
.item { /* 플렉스 아이템 */
    width: /* value <= 라이브 데모에서 동적으로 구현 */;
    border: 4px solid blue;
    background-color: yellow;
}

/* 일부 스타일 코드는 가독성을 위해 생략했습니다! */
selector {
    gap: /* value */
}
/* 두 개 값 구문:
   첫 번째는 row-gap 속성의 값,
   두 번째는 colunm-gap 속성의 값을
   띄어쓰기로 구분하여 순서대로 각각의 값으로 지정 */
gap: 0 0;
gap: 0 10px;
gap: 10px 0;
gap: 3vw 10px;
gap: 2rem 5%;
gap: 2em 3vh;

/* 한 개 값 구문:
   row-gap과 colunm-gap 속성의 값을 하나의 값으로 지정 */
gap: 0;
gap: 10px;
gap: 3vw;
gap: 2rem;
gap: 2em;
gap: 5%;

/* 초깃값 */
gap: normal normal; /* 레이아웃에 따라 계산되는 기본값 (flexbox에서는 0px 0px) */

/* 글로벌 값 */
gap: inherit;
gap: initial;
gap: unset;
gap: revert;
gap: revert-layer;
gap: 0 10px;
/*
다음과 동일합니다.
row-gap: 0;
column-gap: 10px;
*/
gap: 0;
/*
다음과 동일합니다.
row-gap: 0;
column-gap: 0;
*/

gap: 10px;
/*
다음과 동일합니다.
row-gap: 10px;
column-gap: 10px;
*/
selector {
    row-gap: normal | <길이> | <백분율(%)>
}
selector {
    column-gap: normal | <길이> | <백분율(%)>
}
<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;
    gap: 10px 0;
    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;
}
실제 적용된 모습
<div class="flex-container">
    <div class="item">1번 아이템</div>
    <div class="item">2번 아이템</div>
    <div class="item">3번 아이템</div>
    <div class="item">4번 아이템</div>
    <div class="item">5번 아이템</div>
    <div class="item">6번 아이템</div>
</div>
.flex-container {
    display: flex; /* 플렉스 컨테이너 생성 */
    gap: 10px; /* 플렉스 아이템 간격 설정 */
    padding: 10px;
    border: 2px solid #333;
    flex-flow: row wrap; /* 데스크톱 디자인에 적용 */
}
.item {
    background-color: #4CAF50;
    color: white;
    padding: 15px;
    box-sizing: border-box; /* 패딩과 테두리를 너비에 포함 */
    flex: 0 0 calc((100% - 20px) / 3); /* calc((100% - (간격개수 * gap)) / 아이템개수) */
    text-align: center;
}

@media (max-width: 750px) {
    .flex-container {
        flex-flow: column nowrap; /* 모바일 디자인에 적용 */
    }
    .item {
        flex: 1; /* 플렉스 아이템들이 가로로 꽉 차게 설정 */
    }
}
실제 적용된 모습 브라우저 화면 폭을 늘리거나 줄여보세요. 반응형 웹 디자인이 구현됩니다.