Flexbox는 한 방향(가로 또는 세로)의 레이아웃을 관리하는 데 최적화되어 있습니다. 즉, 한 줄(row)이나 한 열(column)을 기준으로 요소를 배치하고 정렬합니다.
단일 행이나 열의 정렬이 필요한 상황에 적합합니다. 예를 들어, 내비게이션 바, 버튼 그룹, 카드 목록 등을 배치할 때 유용합니다.
.container {
display: flex;
flex-direction: row; /* 가로 방향 */
justify-content: space-between; /* 요소 간의 간격 */
align-items: center; /* 세로 정렬 */
}
Grid는 행(row)과 열(column) 모두를 기준으로 레이아웃을 구성할 수 있습니다. 복잡한 레이아웃을 만들 때 유리합니다.
웹 페이지의 전체 레이아웃, 대시보드, 포토 갤러리와 같은 복잡한 배치가 필요한 상황에서 사용됩니다.
.container {
display: grid;
grid-template-columns: 1fr 2fr 1fr; /* 세 개의 열 정의 */
grid-template-rows: auto; /* 행의 크기를 자동으로 설정 */
gap: 10px; /* 격자 간 간격 */
}
.item1 {
grid-column: 1 / 3; /* 첫 번째 항목은 첫 번째부터 두 번째 열까지 차지 */
}
특징 | Flexbox | Grid |
---|---|---|
차원 | 1차원 레이아웃 (가로 또는 세로) | 2차원 레이아웃 (가로 + 세로) |
주요 사용 사례 | 간단한 정렬, 단일 행/열 구성 | 복잡한 페이지 레이아웃, 대시보드, 포토 갤러리 |
요소 정렬 방식 | 주 축과 교차 축 기준으로 정렬 | 행과 열을 정의하고 격자 기반으로 정렬 |
복잡한 레이아웃 구현 | 제한적 (1차원) | 유연하고 다양한 배치 가능 (2차원) |