수직 및 수평 중앙 정렬 방법 요약
카테고리
프로그래밍/소프트웨어 개발
서브카테고리
웹 개발
대상자
웹 개발자, 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-container
에display: flex
를 적용하여 유연한 레이아웃을 생성합니다.justify-content: center
로 수평 중앙 정렬,align-items: center
로 수직 중앙 정렬을 수행합니다.min-height: 100vh
를 사용해 뷰포트 높이에 맞게 중앙 정렬합니다.box-sizing: border-box
로 패딩을 너비/높이에 포함시켜 계산을 간소화합니다.
2. CSS Grid 사용 (복잡한 레이아웃에 효과적)
.parent-container
에display: grid
를 설정하고place-items: center
로 한 줄의 속성으로 중앙 정렬을 수행합니다.min-height: 100vh
로 뷰포트 내에서 정확한 중앙 정렬이 가능합니다.- Grid는 2D 레이아웃에서 Flexbox보다 더 강력한 기능을 제공합니다.
3. 절대 위치 + transform (전통적이고 브라우저 호환성 좋음)
.parent-container
에position: relative
를 설정하여 절대 위치 요소의 기준이 되도록 합니다..centered-div
에position: absolute
,top: 50%
,left: 50%
로 부모의 중심으로 이동합니다.transform: translate(-50%, -50%)
로 요소 자체의 너비/높이의 50%만큼 이동하여 완벽한 중앙 정렬을 달성합니다.
4. 절대 위치 + margin: auto (고정된 너비/높이 필요)
.centered-div
에top: 0
,right: 0
,bottom: 0
,left: 0
로 부모를 완전히 채우고margin: auto
로 중앙에 정렬합니다.- 이 방법은 고정된 너비와 높이가 필수적이며, 동적 크기 요소에는 적합하지 않습니다.
결론
- Flexbox와 CSS Grid는 대부분의 경우에 가장 추천되는 방법으로, 동적 크기 요소에도 유연하게 적용 가능합니다.
- 절대 위치 + transform은 정확한 중앙 정렬이 필요한 오버레이나 정밀한 위치 조정에 적합합니다.
- margin: auto는 고정 크기 요소에 한해서만 사용 가능하며, 복잡한 레이아웃에서는 권장하지 않습니다.
- 레이아웃의 요구사항과 브라우저 호환성을 고려해 적절한 방법을 선택하세요.