실무에 바로 적용할 수 있는 웹 제작 꿀팁 및 유용한 자료실 공간입니다.
나눔웹이 제공하는 핵심 노하우와 마케팅 인사이트를 자유롭게 활용해 보십시오.

나눔웹 모바일 꿀팁

모바일 100vh 잘림, dvh·svh로 주소창 높이까지 맞추는 법

모바일 100vh 잘림은 풀스크린 히어로나 하단 고정 버튼을 만들 때 자주 겪는 문제입니다. 아이폰·안드로이드 주소창 높이가 변하는데도 100vh는 그 변화를 반영하지 않아, 화면 밖으로 버튼이 밀려 나갑니다.
지금은 dvh·svh로 실제 보이는 높이에 맞출 수 있고, 예전 vh는 폴백으로만 남겨 두면 됩니다. 예전에 JS로 창 높이를 재던 방식보다 유지보수가 훨씬 가볍습니다.

💡 왜 100vh만으로는 안 맞나요?

모바일 브라우저의 100vh는 보통 주소창이 숨겨진 뒤의 큰 화면 높이를 기준으로 잡습니다. 처음 들어왔을 때는 주소창이 보이니, 같은 100vh 영역이 실제 화면보다 커져 하단이 잘리거나 스크롤이 생깁니다. PC에서는 티가 안 나서, 모바일 실기기에서만 발견되는 경우가 많습니다.

1. svh, lvh, dvh 차이부터 정리

세 단위는 모두 '뷰포트 높이의 1%'지만, 주소창을 어떻게 가정하느냐가 다릅니다. 고객사 랜딩을 손볼 때는 용도별로 골라 쓰는 편이 안전합니다. lvh는 예전 vh와 비슷한 큰 높이이고, svh는 주소창이 다 보이는 작은 높이, dvh는 지금 보이는 높이입니다.

단위기준이런 때
svh주소창이 다 보이는 작은 높이첫 화면에서 절대 잘리면 안 될 때
lvh주소창이 숨은 큰 높이스크롤 뒤 넓게 채우고 싶을 때
dvh지금 보이는 높이(따라 변함)현재 화면에 딱 맞추고 싶을 때

2. 히어로·풀스크린에 쓰는 실무 패턴

지원하지 않는 오래된 브라우저를 위해 vh를 먼저 쓰고, 그다음 줄에 dvh나 svh를 덮어씁니다. 첫 화면 히어로는 잘림을 막으려면 100svh가 더 안전한 경우가 많고, 스크롤에 맞춰 계속 맞추려면 100dvh를 씁니다. 하단 고정 CTA 바는 bottom: 0과 함께 safe-area까지 챙기는 편이 좋습니다.

/* 풀스크린 히어로 — 폴백 후 덮어쓰기 */
.hero {
  min-height: 100vh;   /* 구형 브라우저 */
  min-height: 100svh;  /* 첫 화면 잘림 방지 */
}

/* 현재 보이는 높이에 맞출 때 */
.sheet {
  height: 100vh;
  height: 100dvh;
}

크롬 108, 사파리 15.4, 파이어폭스 101부터 지원합니다. 그 이전 브라우저는 위의 100vh 줄만 적용되므로, 예전과 같은 수준으로라도 동작합니다. 아이폰은 iOS 15.4 이후면 사파리뿐 아니라 다른 브라우저에도 같이 적용됩니다.

3. 하단 고정 버튼과 같이 쓸 때

풀스크린 영역 안에 하단 고정 버튼을 넣는 구조라면, 바깥은 min-height: 100svh로 잡고 버튼은 position: sticky나 일반 플로우로 두는 편이 덜 꼬입니다. 전체를 100dvh 박스 하나로 감싼 뒤 그 안에 position: fixed 버튼을 또 넣으면, 주소창이 움직일 때마다 겹침이 다시 생길 수 있습니다.

/* 바깥은 안정적인 svh, 안은 일반 배치 */
.page {
  min-height: 100vh;
  min-height: 100svh;
  display: flex;
  flex-direction: column;
}
.page .cta {
  margin-top: auto; /* 아래로 밀기 */
  padding-bottom:
    env(safe-area-inset-bottom);
}

4. dvh를 쓸 때 조심할 점

dvh는 주소창이 접히고 펴질 때마다 높이가 바뀝니다. 히어로 안에 큰 이미지나 스크롤 스냅이 있으면 레이아웃이 살짝 출렁일 수 있으니, '지금 화면에 딱 맞춰야 하는 패널'에만 쓰고 본문 전체에는 svh나 일반 흐름을 유지하는 편이 낫습니다.

또 하나, 가상 키보드(입력창 키보드)는 이 단위 계산에 보통 들어가지 않습니다. 문의 폼처럼 키보드가 올라오는 화면은 dvh만으로 해결되지 않는 경우가 있으니, 입력 중 잘림이 보이면 별도로 확인하세요. 실무에서는 아이폰 사파리와 안드로이드 크롬 두 대에서 주소창을 올리고 내린 뒤 하단 버튼이 보이는지 확인하면 충분합니다.

"모바일 높이는 고정값이 아니라, 지금 보이는 화면입니다."

나눔웹은 랜딩·풀스크린 구간을 실제 기기에서 맞춰 보며, 주소창과 하단 버튼이 겹치지 않게 마무리합니다.


List of Articles
번호 분류 제목 글쓴이
76 웹 성능 홈페이지 로딩 속도를 3배 높이는 '이미지 최적화' 실무 가이드 나눔웹
75 퍼블리싱 CSS 변수로 유지보수와 테마 기능을 한 번에! (CSS Custom Properties) 나눔웹
74 마케팅 카카오톡 링크 썸네일의 비밀! 클릭률을 높이는 '오픈 그래프(OG)' 세팅법 나눔웹
73 모바일 모바일 꽉 찬 화면 하단 짤림 현상! '100vh'의 함정과 완벽 해결법 나눔웹
72 웹 성능 홈페이지 첫 화면 글자 깜빡임(투명 현상) 1초 만에 해결하는 법 나눔웹
71 퍼블리싱 스마트폰에서 로고가 흐리게 보인다고요? 'SVG' 포맷이 정답입니다. 나눔웹
70 웹 성능 클릭 실수 유발하는 '화면 덜컹거림(CLS)', 단 한 줄로 해결하는 법 나눔웹
69 모바일 고객의 이탈을 막는 1초 디테일, '모바일 맞춤형 키보드' 세팅법 나눔웹
68 UI/UX 모바일에서 버튼 누를 때 생기는 촌스러운 '회색 박스' 없애는 법 나눔웹
67 UI/UX 레이아웃을 망치는 긴 글, 예쁘게 '...'으로 자르는 마법의 CSS 나눔웹
66 UI/UX 상단 메뉴에 제목이 가려진다고요? '부드러운 스크롤' 마법의 2줄 나눔웹
65 모바일 아이폰에서 입력창 누를 때 화면 '자동 확대'되는 현상 막는 법 나눔웹
64 퍼블리싱 지저분한 모바일 스크롤바, 기능은 남기고 쏙 숨기는 마법의 CSS 나눔웹
63 모바일 모바일 웹을 진짜 '앱(App)'처럼! 이미지 꾹 누를 때 뜨는 팝업 막기 나눔웹
62 UI/UX 애플(Apple) 사이트처럼 고급스러운 '반투명 유리' 메뉴 만드는 법 나눔웹
61 퍼블리싱 무거운 플러그인 NO! 넷플릭스처럼 쫀득한 '가로 스와이프' CSS로 뚝딱 만들기 나눔웹
60 UI/UX 1%의 디테일이 브랜딩을 완성합니다! '텍스트 드래그 색상' 바꾸기 나눔웹
59 UI/UX 투박한 파란색 체크박스는 그만! 단 1줄로 우리 회사 컬러 입히기 나눔웹
58 모바일 하단 고정 버튼이 아이폰 '검은 줄'에 겹친다면? (Safe Area 대응법) 나눔웹
57 모바일 앗, 실수로 새로고침! 튕기는 모바일 화면 꽉 잡는 법 (Overscroll) 나눔웹
Board Pagination Prev 1 2 3 4 Next
/ 4
rhwlsghkcocndgus XE2.1.39 STAGE1.5.4