Flexbox 레이아웃 버그 트러블슈팅 - IE11 min-height 이슈

문제 상황

관리자 페이지 사이드바 레이아웃을 Flexbox로 구현하던 중 IE11에서만 하단 버튼 영역이 제대로 표시되지 않는 이슈가 발생했다. Chrome과 Firefox에서는 정상 동작했다.

.sidebar {
  display: flex;
  flex-direction: column;
  min-height: 100vh;
}

.content {
  flex: 1;
}

.footer {
  margin-top: auto;
}

IE11에서는 .content 영역이 내용물만큼만 높이를 차지하고 .footer가 하단에 고정되지 않았다.

원인

IE11의 Flexbox 구현 버그였다. flex container에 min-height를 사용할 경우, 자식 요소의 flex: 1이 제대로 계산되지 않는다. IE11은 min-height를 높이 계산의 기준으로 인식하지 못한다.

해결 방법

height: 100vh를 직접 지정하거나, wrapper div를 추가하는 방법도 있지만 더 간단한 방법을 찾았다.

.sidebar {
  display: flex;
  flex-direction: column;
  min-height: 100vh;
}

.content {
  flex: 1 0 auto; /* flex-shrink: 0, flex-basis: auto 명시 */
}

flex-basis: auto를 명시적으로 설정하니 IE11에서도 정상 동작했다.

추가 발견

IE11 Flexbox 관련 버그는 꽤 많은 편이다. flex-basisflex-shrink 계산 로직이 표준과 다른 경우가 많아서, 축약형 flex: 1 대신 풀 버전으로 명시하는 게 안전하다는 걸 배웠다.

Autoprefixer가 -ms- prefix는 자동으로 추가해주지만, 이런 동작 차이까지는 해결해주지 못한다. 결국 실제 IE11 테스트가 필수다.