Flexbox란?
Flexbox는 1차원 레이아웃을 위한 CSS 모듈입니다. 주축(main axis)과 교차축(cross axis)을 사용하여 요소들을 배치합니다.
주요 Flexbox 속성
- display: flex: Flexbox 컨테이너 생성
- flex-direction: 주축 방향 설정 (row, column, row-reverse, column-reverse)
- justify-content: 주축 정렬 (flex-start, center, flex-end, space-between, space-around)
- align-items: 교차축 정렬 (flex-start, center, flex-end, stretch, baseline)
- flex-wrap: 줄바꿈 설정 (nowrap, wrap, wrap-reverse)
Flexbox 예제
.container {
display: flex;
justify-content: center;
align-items: center;
gap: 20px;
}
.item {
flex: 1;
}
Grid란?
Grid는 2차원 레이아웃을 위한 CSS 모듈입니다. 행(row)과 열(column)을 모두 제어할 수 있어 복잡한 레이아웃을 만들 때 유용합니다.
주요 Grid 속성
- display: grid: Grid 컨테이너 생성
- grid-template-columns: 열 크기 정의
- grid-template-rows: 행 크기 정의
- grid-gap: 그리드 간격 설정
- grid-column / grid-row: 아이템 위치 지정
Grid 예제
.container {
display: grid;
grid-template-columns: repeat(3, 1fr);
grid-template-rows: auto;
gap: 20px;
}
.item {
grid-column: span 2;
}
Flexbox vs Grid
| 특징 | Flexbox | Grid |
|---|---|---|
| 차원 | 1차원 (주축 중심) | 2차원 (행과 열) |
| 용도 | 컴포넌트 레이아웃 | 전체 페이지 레이아웃 |
| 복잡도 | 간단한 레이아웃 | 복잡한 레이아웃 |
실전 활용 팁
- Flexbox는 작은 컴포넌트나 1차원 레이아웃에 사용
- Grid는 전체 페이지 레이아웃이나 복잡한 2차원 레이아웃에 사용
- 두 기술을 함께 사용하여 더 유연한 레이아웃 구현 가능
- 반응형 디자인을 위해 미디어 쿼리와 함께 활용
마무리
Flexbox와 Grid는 현대적인 웹 레이아웃의 핵심 기술입니다. 두 기술을 모두 마스터하면 어떤 레이아웃도 구현할 수 있습니다.