CSS Grid vs Flexbox: 선택 기준 및 사용 사례
카테고리
프로그래밍/소프트웨어 개발
서브카테고리
웹 개발
대상자
웹 개발자, 특히 복잡한 레이아웃 설계 시 CSS Grid와 Flexbox의 차이를 이해하고자 하는 중급 이상 개발자
핵심 요약
- CSS Grid는 2D 레이아웃(행과 열 모두 제어)에 적합하며, Flexbox는 1D 레이아웃(행 또는 열 중 하나만 제어)에 적합하다.
- Grid는 정교한 레이아웃(대시보드, 포토 갤러리, 겹치는 요소)을 구현하는 데 강력하다.
- Flexbox는 단순한 정렬(네비게이션, 유연한 크기 조절) 및 Grid 내부 요소 정렬에 적합하다.
섹션별 세부 요약
1. CSS Grid와 Flexbox의 차이점
- Grid는 행과 열을 동시에 제어하는 2D 시스템으로, 정밀한 위치 지정이 가능하다.
- Flexbox는 단일 방향(행 또는 열)에서만 작동하는 1D 시스템으로, 간단한 정렬에 효과적이다.
- Grid는 겹치는 요소(예: 이미지 위에 텍스트)나 복잡한 레이아웃(대시보드)을 간단히 구현할 수 있다.
2. CSS Grid의 주요 사용 사례
- 대시보드 레이아웃
grid-template-areas
로 헤더, 사이드바, 메인 컨텐츠, 푸터를 동시에 정의할 수 있다.- 예:
```css
.grid-container {
display: grid;
grid-template-columns: 200px 1fr;
grid-template-rows: 80px 1fr 60px;
grid-template-areas: "header header" "sidebar main" "footer footer";
}
```
- 포토 갤러리 및 특징 이미지
grid-column
과grid-row
를 사용해 특정 요소가 여러 열/행을 차지하도록 설정 가능.- 예:
```css
.featured {
grid-column: 1 / 3;
grid-row: 1 / 2;
}
```
3. CSS Grid의 반응형 디자인
repeat(auto-fit, minmax(...))
로 반응형 카드 레이아웃 구현 가능.- 예:
```css
.grid-container {
grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
}
```
4. Flexbox의 주요 사용 사례
- 단순한 정렬(네비게이션 바, 버튼 목록)
justify-content
및align-items
로 간편하게 정렬 가능.- 예:
```css
.nav {
display: flex;
justify-content: space-between;
}
```
- Grid 내부 요소 정렬
- Grid 셀 내부에서 Flexbox로 요소 정렬 가능.
5. Grid와 Flexbox의 혼합 사용
- Grid는 전체 페이지 구조를, Flexbox는 Grid 내부 요소 정렬에 사용.
- 예:
```css
.main {
display: flex;
flex-wrap: wrap;
gap: 10px;
}
```
결론
- CSS Grid는 2D 레이아웃(대시보드, 겹치는 요소, 반응형 그리드)에, Flexbox는 1D 레이아웃(네비게이션, 유연한 크기 조절)에 적합하다.
- 복잡한 레이아웃은 Grid, 간단한 정렬은 Flexbox를 사용하며, Grid 내부에서 Flexbox를 결합하는 것이 실무에서 효과적이다.