Flexbox와 Grid는 각각 어떤 레이아웃에 적합한가요?
답변 포인트
1차원 정렬과 2차원 배치를 기준으로 정의, 장점, 한계, 예시를 함께 설명해보세요.
정답 및 해설
빠른 요약
Flexbox는 한 방향의 정렬과 공간 분배에 강하고, Grid는 행과 열을 함께 다루는 2차원 배치에 강합니다. 실제 UI에서는 두 방식을 함께 사용하는 경우가 많습니다.
Flexbox는 한 방향의 정렬과 공간 분배에 강하고, Grid는 행과 열을 함께 다루는 2차원 배치에 강합니다. 실제 UI에서는 두 방식을 함께 사용하는 경우가 많습니다.
핵심 개념
핵심 기준은 1차원 정렬과 2차원 배치입니다. 이 개념은 단순한 용어가 아니라, 실제 코드나 시스템에서 반복적으로 생기는 문제를 다루기 위해 등장했습니다.
CSS는 cascade, layout, stacking context가 함께 동작합니다. 작은 속성 하나가 화면 전체의 배치나 접근성에 영향을 줄 수 있어 동작 원리를 알고 써야 합니다.
동작 흐름
- 먼저 어떤 문제가 있는지 확인합니다.
- 이 개념이 그 문제를 어떤 기준으로 나누거나 해결하는지 봅니다.
- 실제 코드에서는 입력, 상태, 실행 순서, 비용이 어떻게 바뀌는지 확인합니다.
- 마지막으로 한계와 부작용을 함께 점검합니다.
실제 예시
.toolbar {
display: flex;
align-items: center;
gap: 8px;
}
.gallery {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
gap: 16px;
}Flexbox는 한 줄의 정렬에, Grid는 행과 열을 동시에 다루는 배치에 잘 맞습니다.
실무에서 주의할 점
- 속성 하나가 새로운 formatting context나 stacking context를 만들 수 있습니다.
- 고정 크기만으로 반응형을 처리하면 작은 화면에서 쉽게 깨집니다.
- 포커스 스타일과 색 대비를 제거하면 접근성이 크게 나빠집니다.
함께 연결해서 보면 좋은 키워드
CSS, Flexbox, Grid, 레이아웃
정리
한 줄로 정리하면, Flexbox는 한 방향의 정렬과 공간 분배에 강하고, Grid는 행과 열을 함께 다루는 2차원 배치에 강합니다. 실제 UI에서는 두 방식을 함께 사용하는 경우가 많습니다. 실무에서는 개념을 적용하는 조건과 적용하지 않았을 때 생기는 문제까지 함께 이해하는 것이 중요합니다.
Flexbox와 Grid의 선택 기준
Flexbox는 한 방향(행 또는 열)의 흐름을 정렬하는 데 강하고, Grid는 행과 열을 동시에 다루는 2차원 레이아웃에 강합니다.
/* 버튼 그룹, 네비게이션 */
.actions {
display: flex;
gap: 8px;
justify-content: flex-end;
align-items: center;
}
/* 카드 목록 */
.cards {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
gap: 16px;
}실무 기준
| 상황 | 추천 |
|---|---|
| 요소를 한 줄/한 축으로 배치 | Flexbox |
| 카드 그리드, 대시보드 | Grid |
| 콘텐츠 크기에 따라 자연스럽게 밀림 | Flexbox |
| 열/행 간 정렬을 명확히 제어 | Grid |
둘은 경쟁 관계가 아니라 함께 쓰는 도구입니다. 페이지 전체는 Grid, 카드 내부 버튼 정렬은 Flexbox처럼 조합하면 좋습니다.