수직/수평 중앙 정렬: Flexbox, CSS Grid, 절대 위치 활용법

수직 및 수평 중앙 정렬 방법 요약

카테고리

프로그래밍/소프트웨어 개발

서브카테고리

웹 개발

대상자

웹 개발자, CSS 레이아웃 기술 습득자 (중간 수준)

핵심 요약

  • Flexbox (display: flex, justify-content: center, align-items: center)는 일반적으로 가장 추천되는 방법입니다.
  • CSS Grid (display: grid, place-items: center)는 복잡한 레이아웃에서도 간결하게 중앙 정렬이 가능합니다.
  • 절대 위치 + transform (top: 50%, left: 50%, transform: translate(-50%, -50%))은 고정된 크기 없이도 정확한 중앙 정렬이 가능합니다.
  • 절대 위치 + margin: auto는 요소의 고정 너비/높이가 필요합니다.

섹션별 세부 요약

1. Flexbox 사용 (일반적인 경우 최적)

  • .parent-containerdisplay: flex를 적용하여 유연한 레이아웃을 생성합니다.
  • justify-content: center로 수평 중앙 정렬, align-items: center로 수직 중앙 정렬을 수행합니다.
  • min-height: 100vh를 사용해 뷰포트 높이에 맞게 중앙 정렬합니다.
  • box-sizing: border-box로 패딩을 너비/높이에 포함시켜 계산을 간소화합니다.

2. CSS Grid 사용 (복잡한 레이아웃에 효과적)

  • .parent-containerdisplay: grid를 설정하고 place-items: center로 한 줄의 속성으로 중앙 정렬을 수행합니다.
  • min-height: 100vh로 뷰포트 내에서 정확한 중앙 정렬이 가능합니다.
  • Grid는 2D 레이아웃에서 Flexbox보다 더 강력한 기능을 제공합니다.

3. 절대 위치 + transform (전통적이고 브라우저 호환성 좋음)

  • .parent-containerposition: relative를 설정하여 절대 위치 요소의 기준이 되도록 합니다.
  • .centered-divposition: absolute, top: 50%, left: 50%로 부모의 중심으로 이동합니다.
  • transform: translate(-50%, -50%)로 요소 자체의 너비/높이의 50%만큼 이동하여 완벽한 중앙 정렬을 달성합니다.

4. 절대 위치 + margin: auto (고정된 너비/높이 필요)

  • .centered-divtop: 0, right: 0, bottom: 0, left: 0로 부모를 완전히 채우고 margin: auto로 중앙에 정렬합니다.
  • 이 방법은 고정된 너비와 높이가 필수적이며, 동적 크기 요소에는 적합하지 않습니다.

결론

  • FlexboxCSS Grid는 대부분의 경우에 가장 추천되는 방법으로, 동적 크기 요소에도 유연하게 적용 가능합니다.
  • 절대 위치 + transform은 정확한 중앙 정렬이 필요한 오버레이나 정밀한 위치 조정에 적합합니다.
  • margin: auto는 고정 크기 요소에 한해서만 사용 가능하며, 복잡한 레이아웃에서는 권장하지 않습니다.
  • 레이아웃의 요구사항과 브라우저 호환성을 고려해 적절한 방법을 선택하세요.