`display: flex; flex-direction: column; min-height: 100%`인 컨테이너 안에서, 가운데에 두고 싶은 요소에 `margin-block: auto`(위아래 마진 모두 `auto`)를 줍니다. Flexbox에서 `auto` 마진은 그 방향의 남는 공간을 전부 빨아들이는 성질이 있으므로, 위 여백과 아래 여백이 같은 크기로 늘어나며 요소를 정확히 중앙에 위치시킵니다.
이 방식의 특별한 점은 header·footer가 있어도 없어도 같은 코드가 그대로 작동한다는 것입니다. header가 있으면 `margin-block: auto`는 "header 아래부터 footer 위까지"의 남은 공간을 기준으로 중앙을 계산하고, header가 사라지면 그만큼 계산 기준이 자동으로 넓어질 뿐 코드를 바꿀 필요가 없습니다. `position: absolute` + `transform: translateY(-50%)`로 중앙 정렬을 하면 이런 유연함이 없습니다 — 부모의 실제 높이를 무시하고 항상 정중앙에 못박히기 때문입니다.
히어로 섹션의 "화면 전체 높이를 쓰되 안에 로고나 안내문 한 줄이 얹혀야 하는" 상황에 정확히 들어맞는 패턴입니다.
언제 쓰나
풀스크린 히어로, 로그인 화면, 404 페이지처럼 "화면 전체를 차지하되 안의 콘텐츠는 가운데 있어야 하는" 화면에 씁니다.