회사에서 웹앱 작업하면서 겪은 경험을 공유하려고 한다.
JS로 뷰포트 높이를 계산해서 CSS 변수로 넣는 방식.
const setVh = () => {
document.documentElement.style.setProperty(
"--vh",
`${window.innerHeight * 0.01}px`
);
};
window.addEventListener("resize", setVh);
setVh();
Safari 전용 속성.
말 그대로 "사용 가능한 공간을 꽉 채워라"라는 의미.
이거 추가하니까 확실히 개선됨.
svh = small viewport height
→ 주소창이 펼쳐진 상태의 최소 높이
lvh = large viewport height
→ 주소창이 접힌 상태의 최대 높이
결국 이렇게 네 가지를 다 같이 쓰니까 완벽하게 해결됐다 🤡
.app {
/* fallback */
height: calc(var(--vh, 1vh) * 100);
/* Safari 전용 */
height: -webkit-fill-available;
/* 최신 표준 */
min-height: 100svh;
max-height: 100lvh;
}
그래서 난 네 가지를 다 넣는 조합으로 마무리했다.✌️