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

나눔웹 모바일 꿀팁

모바일 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
번호 분류 제목 글쓴이
» 모바일 모바일 100vh 잘림, dvh·svh로 주소창 높이까지 맞추는 법 new 나눔웹
74 마케팅 구글 서치 콘솔 등록 방법, 새 홈페이지 소유권 확인부터 색인 요청까지 new 나눔웹
73 퍼블리싱 CSS :has() 선택자 활용법, 자식 상태에 따라 부모 박스 스타일 바꾸기 new 나눔웹
72 웹 성능 반응형 이미지 srcset 쓰는 법, 모바일에 PC용 큰 사진을 보내지 않으려면 나눔웹
71 퍼블리싱 제목 줄바꿈이 어색할 때, text-wrap: balance로 한 단어만 남는 문제 정리 나눔웹
70 마케팅 robots.txt 작성법, 검색에 안 보여야 할 페이지와 사이트맵 위치 알려주는 순서 나눔웹
69 UI/UX 스켈레톤 로딩 화면 만들기, 빈 화면 대신 회색 자리 표시로 기다림 줄이는 법 나눔웹
68 퍼블리싱 모바일에서 표(table)가 깨질 때, 가로 스크롤로 감싸거나 카드형으로 바꾸는 법 나눔웹
67 웹 성능 gzip 압축 설정법, 홈페이지 HTML·CSS 파일을 작게 보내 로딩 줄이는 순서 나눔웹
66 모바일 아이폰에서 숫자가 파란 전화 링크로 바뀔 때, format-detection으로 막는 법 나눔웹
65 마케팅 사이트맵(sitemap.xml) 만들기, 새 페이지가 검색에 늦게 잡힐 때 작성과 제출법 나눔웹
64 UI/UX FAQ 아코디언 만들기, details와 summary 태그로 스크립트 없이 접고 펴는 법 나눔웹
63 웹 성능 PageSpeed Insights 점수 보는 법, 실사용자 데이터와 실험실 점수가 다를 때 나눔웹
62 UI/UX 404 에러 페이지 만들기, 방문자를 놓치지 않는 구성과 상태 코드 확인법 나눔웹
61 퍼블리싱 카드 목록 반응형 정렬, 미디어쿼리 대신 grid auto-fill과 minmax로 나눔웹
60 마케팅 구글 검색 사이트 이름이 엉뚱하게 나올 때, WebSite 구조화 데이터로 지정하는 법 나눔웹
59 모바일 모바일 가로 스크롤이 생길 때, 화면 밖으로 튀어나온 요소 찾아 고치는 순서 나눔웹
58 웹 성능 외부 폰트가 늦게 뜰 때, preconnect와 dns-prefetch로 연결 시간 줄이는 법 나눔웹
57 퍼블리싱 모달 팝업 만들기, dialog 태그로 ESC 닫기와 배경 클릭 닫기까지 처리하는 법 나눔웹
56 마케팅 301 리디렉션 설정법, 페이지 주소를 바꿀 때 검색 노출 지키는 순서 나눔웹
Board Pagination Prev 1 2 3 4 Next
/ 4
rhwlsghkcocndgus XE2.1.39 STAGE1.5.4