Flex와 Grid의 차이점

kimsnmyng·2025년 1월 14일

Front-End CS

목록 보기
26/79

출처: 매일메일

Flexbox와 Grid의 차이점

CSS에서 Flexbox와 Grid는 레이아웃을 구성할 때 자주 사용되는 두 가지 강력한 도구이다. 이들은 요소를 배치하고 정렬하는 데 유용하지만, 각각의 목적과 기능에 차이가 있다.

1. 차원(Dimensionality)

  • Flexbox: 1차원 레이아웃 시스템으로, 요소를 행(row) 또는 열(column) 중 하나의 방향으로 정렬한다. 단일 축을 기준으로 작동하며, 주로 간단한 레이아웃에 적합하다.
  • Grid: 2차원 레이아웃 시스템으로, 요소를 행과 열 모두를 기준으로 배치할 수 있다. 복잡한 레이아웃을 설계하는 데 최적화되어 있다.

2. 사용 목적

  • Flexbox: 콘텐츠 중심(Content-first) 접근 방식을 따른다. 콘텐츠가 추가되거나 줄어들 때 유연하게 대처할 수 있어 버튼 그룹, 내비게이션 바 등 단일 행 또는 열의 정렬에 적합하다.
  • Grid: 레이아웃 중심(Layout-first) 접근 방식을 따른다. 페이지의 전체 구조를 설계하거나, 카드 레이아웃 및 갤러리처럼 명확한 영역 기반의 배치가 필요할 때 유용하다.

3. 기본 동작

  • Flexbox:
    • 주 축(main axis)과 교차 축(cross axis)을 기준으로 요소를 정렬한다.
    • justify-contentalign-items 속성을 사용하여 요소 간 간격과 정렬을 조정한다.
    • 요소의 크기와 간격이 동적으로 조정된다.
  • Grid:
    • grid-template-rowsgrid-template-columns 속성을 사용하여 행과 열의 크기를 사전에 정의한다.
    • 요소를 특정 그리드 셀에 배치하거나 자동 배치 규칙을 적용할 수 있다.
    • 복잡한 격자(grid) 기반의 정밀한 배치가 가능하다.

4. 장단점

특징FlexboxGrid
장점간단한 설정, 유연한 정렬복잡한 2차원 레이아웃 가능
단점2차원 레이아웃에는 한계초기 설정 복잡, 학습 곡선 길음
사용 사례버튼 그룹, 내비게이션 바 등 단순 구성대시보드, 포토 갤러리 등 복잡한 구성

5. 결합 사용

Flexbox와 Grid는 함께 사용할 수도 있다. 예를 들어:

  • Grid로 전체 페이지 구조를 설계하고,
  • Flexbox로 각 영역 내부의 콘텐츠 정렬을 처리하는 방식이다.

예제 코드

/* Grid로 전체 레이아웃 구성 */
.container {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 20px;
}
/* Flexbox로 내부 콘텐츠 정렬 */
.item {
display: flex;
justify-content: center;
align-items: center;
}

결론

Flexbox는 단순하고 유연한 정렬 작업에 적합하며, Grid는 복잡하고 정교한 레이아웃 설계에 최적화되어 있다. 두 기술을 상황에 맞게 결합하여 활용하면 더욱 효율적이고 유연한 웹 디자인을 구현할 수 있다.

profile
안녕하세요 김선명입니다.

0개의 댓글