gap

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

클래스 목록

<tr> <th class="tal py12px px16px bg18181B bb2pxsolid27272A cA1A1AA fw600 ttu fs12px ls0-05em">클래스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입니다.

<!-- Separate row-gap and 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 only (no horizontal gap) -->
<div class="df fdc rg16px">
  <div>Row 1</div>
  <div>Row 2</div>
  <div>Row 3</div>
</div>

<!-- column-gap only (no vertical gap) -->
<div class="df cg2rem">
  <div>Col 1</div>
  <div>Col 2</div>
  <div>Col 3</div>
</div>

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

123456

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

<tr> <th class="tal py12px px16px bg18181B bb2pxsolid27272A cA1A1AA fw600 ttu fs12px ls0-05em">클래스CSS방향
rg8pxrow-gap: 8pxRow (vertical) gap
rg16pxrow-gap: 16pxRow (vertical) gap
rg2remrow-gap: 2remRow (vertical) gap — 20px
rg2-4remrow-gap: 2.4remRow (vertical) gap — 24px
cg8pxcolumn-gap: 8pxColumn (horizontal) gap
cg16pxcolumn-gap: 16pxColumn (horizontal) gap
cg2remcolumn-gap: 2remColumn (horizontal) gap — 20px
cg2-4remcolumn-gap: 2.4remColumn (horizontal) gap — 24px

단위별 예시

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

<tr> <th class="tal py12px px16px bg18181B bb2pxsolid27272A cA1A1AA fw600 ttu fs12px ls0-05em">클래스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 조합 패턴입니다.

<tr> <th class="tal py12px px16px bg18181B bb2pxsolid27272A cA1A1AA fw600 ttu fs12px ls0-05em">패턴클래스용도
Card griddg gtcrfit-minmax28rem-1fr gap2remResponsive card list
Button groupdf gap8pxGap between buttons
Form fieldsdf fdc gap16pxVertical form layout
Navigationdf aic gap2-4remHeader menu gap
Tag listdf fww gap8pxWrapping tags
Section gapdf fdc gap4remBetween large content blocks
<!-- Card grid -->
<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>

<!-- Button group -->
<div class="df gap8px">
  <button class="bg6366F1 cFFFFFF py8px px16px br8px bn cp">Save</button>
  <button class="bg27272A cFFFFFF py8px px16px br8px bn cp">Cancel</button>
</div>

<!-- Form fields -->
<form class="df fdc gap16px">
  <input type="text" placeholder="Name" />
  <input type="email" placeholder="Email" />
  <textarea placeholder="Message"></textarea>
  <button class="bg6366F1 cFFFFFF py8px px16px br8px bn cp">Submit</button>
</form>

<!-- Tag list (wrapping allowed) -->
<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은 두 값을 동일하게 적용합니다.

Shorthand 분해: gap은 내부적으로 row-gap + column-gap으로 분해됩니다. gap2rem cg1rem 사용 시 column-gap만 1rem으로 정확히 덮어씁니다. 2값 사용 시에도 분해됩니다: gap2rem-4remrow-gap: 2rem; column-gap: 4rem으로 분해되어, 방향별 클래스로 정확히 덮어쓸 수 있습니다.