AI + Career

✅ CSS Flexbox와 Grid의 차이점과 사용 사례는?

octo54 2025. 4. 16. 13:28
반응형

✅ CSS Flexbox와 Grid의 차이점과 사용 사례는?

프론트엔드 면접에서 “Flexbox와 Grid의 차이점은?”이라는 질문은 단순 문법 암기보다는, 어떤 상황에 어떤 레이아웃 시스템을 선택하는지를 통해 레이아웃 설계에 대한 감각을 확인하려는 질문입니다.
이번 글에서는 두 레이아웃 시스템의 철학적 차이, 실제 사용 예제, 실무에서의 선택 기준까지 완벽히 정리합니다.


📌 1. Flexbox vs Grid – 핵심 개념 비교

항목 Flexbox Grid

1차원(주축/교차축) 2차원(행과 열 모두)
정렬 단위 아이템 중심 정렬 레이아웃 전체 구조 중심 정렬
제어 방향 한 방향 (row/column) 행과 열 동시 제어
사용 목적 컴포넌트 내부 정렬 전체 페이지/섹션 레이아웃
브라우저 지원 IE11 일부 지원 IE는 미지원 (Modern browser OK)

📌 2. Flexbox – 1차원 레이아웃

✅ 기본 문법

.container {
  display: flex;
  flex-direction: row; /* or column */
  justify-content: space-between;
  align-items: center;
}

✅ 대표 사용 사례

  • 버튼 내부 텍스트 + 아이콘 정렬
  • 네비게이션 바
  • 카드 컴포넌트 내부 배치

✅ 실무 예시

<div class="button">
  <span>저장</span>
  <img src="icon.png" />
</div>
.button {
  display: flex;
  justify-content: space-between;
  align-items: center;
}

요소들 사이 간격을 조절하거나 정렬할 때 유용


📌 3. CSS Grid – 2차원 레이아웃

반응형

✅ 기본 문법

.container {
  display: grid;
  grid-template-columns: 1fr 2fr 1fr;
  grid-template-rows: auto;
  gap: 16px;
}

✅ 대표 사용 사례

  • 페이지 전체 레이아웃
  • 대시보드 형태의 UI
  • 격자 형태의 이미지 갤러리

✅ 실무 예시

<div class="layout">
  <header>...</header>
  <nav>...</nav>
  <main>...</main>
  <aside>...</aside>
  <footer>...</footer>
</div>
.layout {
  display: grid;
  grid-template-areas:
    "header header"
    "nav main"
    "footer footer";
  grid-template-columns: 1fr 3fr;
}

시멘틱한 구조를 시각적으로 그대로 표현 가능


📌 4. 어떤 기준으로 선택할까?

상황 추천 레이아웃

하나의 방향으로 정렬해야 할 때 Flexbox
내부 요소의 정렬이 유연해야 할 때 Flexbox
2차원 레이아웃이 필요한 복잡한 UI Grid
정사각형 블록들이 반복되는 구조 Grid
반응형으로 열/행 배치를 조정해야 할 때 Grid + Media Query

📌 5. 실무에서 겪은 문제와 해결 경험

🧪 문제

카드 레이아웃을 구현할 때, 처음엔 Flexbox로 행마다 아이템을 나열함.
그러나 각 행마다 높이가 달라지고, 배치가 고르지 않아 레이아웃이 깨지는 현상 발생

✅ 해결

Grid를 활용하여 행/열을 정확히 설정하고 auto-fill과 minmax()를 사용하여 반응형 대응

.card-container {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(250px, 1fr));
  gap: 20px;
}

결과적으로 모든 카드가 정렬된 형태로 균등 분배되며, 반응형으로도 깨지지 않음


📌 6. 면접에서 이렇게 설명하세요

Flexbox는 1차원 정렬에 적합한 레이아웃 시스템으로, 주로 컴포넌트 내부의 요소 배치에 사용됩니다.
반면 Grid는 2차원 정렬에 특화되어 있어, 전체 페이지 구조 설계나 복잡한 레이아웃에 적합합니다.
실무에서는 두 가지를 조합해서 사용하는 경우가 많고, 상황에 따라 어떤 레이아웃 시스템이 더 직관적이고 효율적인지를 기준으로 선택합니다.


📌 마무리 요약

항목 Flexbox Grid

정렬 방향 1차원 2차원
활용 예 컴포넌트 내부 정렬 페이지 전체 레이아웃
장점 직관적인 정렬 구조화된 배치
단점 복잡한 배치 불리 학습 곡선 있음


CSS,Flexbox,Grid,프론트엔드면접,레이아웃시스템,CSS정렬,웹디자인,반응형웹,실무예제,면접대비