2026-01-17
Flexbox란?
한 방향(1차원) 레이아웃을 위한 CSS 레이아웃 시스템
- 가로(row) 또는 세로(column) 한 방향 기준
- 요소 정렬과 간격 조절에 강함
- 콘텐츠 크기에 따라 유연하게 배치
- 정렬(
align,justify)에 특화
핵심 속성
display: flexflex-directionjustify-contentalign-itemsflex-grow,flex-shrink,flex-basis
Grid란?
행(Row)과 열(Column)을 동시에 다루는 2차원 레이아웃 시스템
- 전체 페이지 구조 설계에 적합
- 복잡한 레이아웃 구성
- 영역 기반 레이아웃 가능
- 정형적인 화면 구성에 강함
핵심 속성
display: gridgrid-template-rowsgrid-template-columnsgrid-template-areasgap
Flexbox와 Grid 차이
| 구분 | Flexbox | Grid |
|---|---|---|
| 레이아웃 차원 | 1차원 | 2차원 |
| 기준 방향 | 한 방향(row/column) | 행 + 열 |
| 설계 방식 | 콘텐츠 중심 | 레이아웃 중심 |
| 정렬 | 요소 정렬에 강함 | 전체 구조 설계에 강함 |
| 대표 사용 | 컴포넌트 내부 | 페이지 전체 |
적당한 경우
Flexbox가 적합한 경우
- 한 줄 또는 한 방향 정렬
- 요소 개수가 유동적
- 간단한 UI 정렬
⇒ 정렬이 목적일 때
Grid가 적합한 경우
- 행/열 구조가 명확함
- 페이지 뼈대 설계
- 영역 기반 레이아웃
⇒ 레이아웃 설계가 목적일 때
혼합 사용
- Grid로 큰 틀 → Flexbox로 내부 정렬 ex. 페이지 전체 → Grid, 카드 내부 버튼 정렬 → Flexbox
참고자료
- https://velog.io/@ikkim01/CSS-Flex-VS-Grid
- https://free-eunb.tistory.com/86