Contents
see ListCSS vertical-align 완벽 가이드
CSS에서 요소를 수직 정렬하는 것은 많은 개발자들이 어려워하는 부분입니다. vertical-align 속성과 다양한 수직 정렬 기법을 알아봅니다.
1. vertical-align 속성 이해하기
vertical-align은 인라인 요소나 테이블 셀에서만 동작합니다.
/* 인라인 요소에서 사용 */
img {
vertical-align: middle;
}
/* 테이블 셀에서 사용 */
td {
vertical-align: middle;
}2. Flexbox로 수직 정렬 (권장)
.container {
display: flex;
align-items: center; /* 수직 중앙 */
justify-content: center; /* 수평 중앙 */
height: 200px;
}
/* 자식 요소 개별 정렬 */
.child {
align-self: flex-start; /* 상단 */
align-self: center; /* 중앙 */
align-self: flex-end; /* 하단 */
}3. Grid로 수직 정렬
.container {
display: grid;
place-items: center; /* 수직, 수평 모두 중앙 */
height: 100vh;
}4. 절대 위치 + Transform
.parent {
position: relative;
height: 300px;
}
.child {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}5. Line-height 활용 (단일 라인)
.button {
height: 50px;
line-height: 50px; /* height와 동일하게 */
text-align: center;
}vertical-align 속성값
| 값 | 설명 |
|---|---|
| baseline | 부모 기준선 정렬 (기본값) |
| top | 라인 박스 상단 정렬 |
| middle | 부모 중앙 정렬 |
| bottom | 라인 박스 하단 정렬 |
| sub | 아래첨자 위치 |
| super | 위첨자 위치 |
| 길이/퍼센트 | 기준선에서 이동 |
실전 팁
- 블록 요소에는 vertical-align이 작동하지 않음
- 이미지 하단 여백 문제는 vertical-align: bottom 으로 해결
- 신규 프로젝트는 Flexbox나 Grid 사용 권장
- IE 지원 필요시 table-cell 기법 활용