gap

flex 또는 grid 컨테이너 안에서 자식 요소 사이의 간격을 설정합니다. dfdg에서만 동작하며, margin 기반 간격을 대체하는 현대적인 방법입니다.

클래스 목록

클래스CSS설명
gap4pxgap: 4px최소 간격. 밀접한 아이콘, 인라인 요소
gap8pxgap: 8px좁은 간격. 버튼 그룹, 태그 목록
gap12pxgap: 12px보통 간격. 폼 필드, 리스트 아이템
gap16pxgap: 16px표준 간격. 일반적인 콘텐츠 사이 여백
gap2remgap: 2rem (20px)rem 시작. 카드 목록, 섹션 내부
gap2-4remgap: 2.4rem (24px)넉넉한 간격. 카드 그리드
gap3-2remgap: 3.2rem (32px)넓은 간격. 섹션 간 구분
gap4remgap: 4rem (40px)큰 간격. 대형 레이아웃
rg8pxrow-gap: 8px행(세로) 간격만 8px
rg16pxrow-gap: 16px행(세로) 간격만 16px
rg2remrow-gap: 2rem (20px)행(세로) 간격만 20px
cg8pxcolumn-gap: 8px열(가로) 간격만 8px
cg16pxcolumn-gap: 16px열(가로) 간격만 16px
cg2remcolumn-gap: 2rem (20px)열(가로) 간격만 20px

시각적 비교

flex 컨테이너에서 다양한 gap 값이 요소 간 간격에 어떤 영향을 주는지 비교합니다.

4px — gap4px

ABCD

8px — gap8px

ABCD

12px — gap12px

ABCD

16px — gap16px

ABCD

20px (2rem) — gap2rem

ABCD

32px (3.2rem) — gap3-2rem

ABCD

gap vs margin 비교

gap은 아이템 사이에만 간격을 넣고, margin은 모든 면에 간격을 추가합니다.

gap — df gap16px

ABC

아이템 사이에만 16px 간격. 첫/마지막 아이템 바깥에는 간격 없음

margin — mr16px

ABC

마지막 아이템 뒤에도 불필요한 16px 간격이 생김

gap이 더 나은 이유

gap은 아이템 사이에만 간격을 넣어 첫/마지막 아이템의 여분 margin 문제가 없습니다. 줄바꿈 시에도 올바르게 동작합니다.

row-gap & column-gap

행(세로)과 열(가로) 간격을 각각 다르게 지정할 수 있습니다. rg는 row-gap, cg는 column-gap입니다.

<!-- row-gap과 column-gap 개별 지정 -->
<div class="dg gtcr3-1fr rg2-4rem cg8px">
  <div>1</div>
  <div>2</div>
  <div>3</div>
  <div>4</div>
  <div>5</div>
  <div>6</div>
</div>

<!-- row-gap만 지정 (가로 간격 없음) -->
<div class="df fdc rg16px">
  <div>행 1</div>
  <div>행 2</div>
  <div>행 3</div>
</div>

<!-- column-gap만 지정 (세로 간격 없음) -->
<div class="df cg2rem">
  <div>열 1</div>
  <div>열 2</div>
  <div>열 3</div>
</div>

rg2-4rem cg8px — 행 24px, 열 8px

123456

행 간격(세로)은 넓고, 열 간격(가로)은 좁음

클래스CSS방향
rg8pxrow-gap: 8px행(세로) 간격
rg16pxrow-gap: 16px행(세로) 간격
rg2remrow-gap: 2rem행(세로) 간격 — 20px
rg2-4remrow-gap: 2.4rem행(세로) 간격 — 24px
cg8pxcolumn-gap: 8px열(가로) 간격
cg16pxcolumn-gap: 16px열(가로) 간격
cg2remcolumn-gap: 2rem열(가로) 간격 — 20px
cg2-4remcolumn-gap: 2.4rem열(가로) 간격 — 24px

단위별 예시

20px 미만은 px, 20px 이상은 rem을 사용합니다. 1rem = 10px 기준입니다.

클래스CSS실제 크기
gap4pxgap: 4px4px
gap8pxgap: 8px8px
gap12pxgap: 12px12px
gap16pxgap: 16px16px
gap2remgap: 2rem20px
gap2-4remgap: 2.4rem24px
gap3-2remgap: 3.2rem32px
gap4remgap: 4rem40px
gap4-8remgap: 4.8rem48px

자주 사용하는 패턴

실무에서 자주 사용하는 gap 조합 패턴입니다.

패턴클래스용도
카드 그리드dg gtcrfit-minmax28rem-1fr gap2rem반응형 카드 목록
버튼 그룹df gap8px버튼 사이 간격
폼 필드df fdc gap16px세로 폼 레이아웃
네비게이션df aic gap2-4rem헤더 메뉴 간격
태그 목록df fww gap8px줄바꿈되는 태그
섹션 간격df fdc gap4rem큰 콘텐츠 블록 사이
<!-- 카드 그리드 -->
<div class="dg gtcrfit-minmax28rem-1fr gap2rem">
  <div class="bg18181B p2rem br8px">Card 1</div>
  <div class="bg18181B p2rem br8px">Card 2</div>
  <div class="bg18181B p2rem br8px">Card 3</div>
</div>

<!-- 버튼 그룹 -->
<div class="df gap8px">
  <button class="bg6366F1 cFFFFFF py8px px16px br8px bn cp">저장</button>
  <button class="bg27272A cFFFFFF py8px px16px br8px bn cp">취소</button>
</div>

<!-- 폼 필드 -->
<form class="df fdc gap16px">
  <input type="text" placeholder="이름" />
  <input type="email" placeholder="이메일" />
  <textarea placeholder="메시지"></textarea>
  <button class="bg6366F1 cFFFFFF py8px px16px br8px bn cp">전송</button>
</form>

<!-- 태그 목록 (줄바꿈 허용) -->
<div class="df fww gap8px">
  <span class="bg27272A cFAFAFA py4px px12px br4px fs14px">HTML</span>
  <span class="bg27272A cFAFAFA py4px px12px br4px fs14px">CSS</span>
  <span class="bg27272A cFAFAFA py4px px12px br4px fs14px">JavaScript</span>
  <span class="bg27272A cFAFAFA py4px px12px br4px fs14px">Vue</span>
  <span class="bg27272A cFAFAFA py4px px12px br4px fs14px">Nuxt</span>
</div>

팁 & 주의사항

gap은 flex/grid 전용

gapdf(display: flex) 또는 dg(display: grid) 컨테이너에서만 동작합니다. block이나 inline 요소에는 적용되지 않습니다.

margin 대신 gap 사용

아이템 사이 간격에는 gap이 margin보다 깔끔합니다. 첫/마지막 아이템의 여분 margin 문제가 없고, 줄바꿈 시에도 올바르게 동작합니다.

4의 배수 사용

간격 값은 4의 배수를 사용하세요: 4px, 8px, 12px, 16px, 2rem(20px), 2-4rem(24px) 등. 일관된 간격 시스템이 디자인 품질을 높입니다.

row-gap/column-gap으로 세밀한 제어

행과 열의 간격을 다르게 하려면 rg(row-gap)와 cg(column-gap)를 개별적으로 지정하세요. gap은 두 값을 동일하게 적용합니다.