반응형 웹을 만들 때 필요한 건 기기 해상도가 아니라 CSS 픽셀 뷰포트, 그리고 주소창을 뺀 실제로 보이는 높이입니다. 세 숫자가 어떻게 다르고 무엇을 기준으로 삼아야 하는지 정리했습니다.
최종 정리 2026년 7월
iPhone 15의 화면 해상도는 1179 × 2556입니다. 하지만 CSS에서 @media (max-width: 400px)가
반응하는 값은 393입니다. 이 둘의 비율이 기기 픽셀 비율(DPR)이고, iPhone 15는 3배입니다.
레이아웃 분기는 두 번째 값으로 잡고, "첫 화면에 무엇이 보이는가"는 세 번째 값으로 검증해야 합니다. 히어로 영역과 CTA 버튼이 잘리는 사고는 대부분 이 세 번째를 안 봐서 생깁니다.
| 기기 | CSS 픽셀 뷰포트 | DPR | Safari 콘텐츠 영역 |
|---|---|---|---|
| iPhone 15 / 15 Pro | 393 × 852 | 3x | 393 × 710 |
| iPhone 15 Plus / 15 Pro Max | 430 × 932 | 3x | 430 × 790 |
| iPhone 14 | 390 × 844 | 3x | 390 × 714 |
| iPhone SE (3세대) | 375 × 667 | 2x | 375 × 598 |
| iPad mini | 744 × 1133 | 2x | 744 × 1061 |
| iPad Pro 11" | 834 × 1194 | 2x | 834 × 1122 |
세로 방향 기준. iOS 15부터 Safari 주소창이 화면 하단에 놓입니다.
아이폰에서 웹페이지가 실제로 쓰는 높이는 화면 전체가 아닙니다. 위아래로 다음이 빠집니다.
그래서 iPhone 15는 852에서 59 + 83을 뺀 710px이 첫 화면입니다.
스크롤을 내리면 주소창이 접히면서 높이가 늘어나므로, 100vh를 쓰면 화면이 튀는 현상이 생깁니다.
100dvh를 쓰거나 첫 화면 기준으로 설계하세요.
안드로이드에서는 링크를 어디서 여느냐에 따라 화면이 달라집니다. 검색 유입의 상당수는 크롬 앱이 아니라 구글 앱 안의 인앱 브라우저에서 열립니다. 상단에 툴바가 하나 더 붙기 때문에 세로 공간이 더 줄어듭니다.
| 기기 | CSS 픽셀 뷰포트 | DPR | 구글 앱 콘텐츠 영역 |
|---|---|---|---|
| Galaxy S24 / S23 | 360 × 780 | 3x | 360 × 676 |
| Galaxy S24+ | 384 × 832 | 3x | 384 × 728 |
| Galaxy S24 Ultra | 384 × 824 | 3.5x | 384 × 720 |
| Galaxy Z Flip5 (펼침) | 360 × 880 | 3x | 360 × 776 |
| Galaxy Z Fold5 (펼침) | 673 × 841 | 2.6x | 673 × 737 |
| Galaxy Z Fold5 (커버) | 344 × 882 | 2.6x | 344 × 778 |
| Pixel 8 | 412 × 915 | 2.6x | 412 × 811 |
상단 상태바 24px + 인앱 브라우저 툴바 56px, 하단 제스처 바 24px 기준.
기기를 여러 개 켜면 이렇게 나란히 붙습니다. 브라우저 UI를 켜면 주소창을 뺀 실제 첫 화면이 보입니다.
100dvh를 쓰는가 — 100vh는 주소창이 접힐 때 어긋납니다.브라우저 개발자 도구는 대개 CSS 픽셀 뷰포트(예: 393 × 852)만 보여주고, 실제 기기의 주소창·상태바가 차지하는 높이는 빼지 않습니다. 그래서 "첫 화면에 뭐가 보이는지"를 판단할 때 실제보다 낙관적인 결과가 나옵니다.
실기기 측정값이 아니라 플랫폼 UI 규격에서 도출한 값입니다. iOS는 상태바(59/47/20) + 주소창 49 + 홈 인디케이터 34, 안드로이드는 상태바 24 + 인앱 브라우저 툴바 56 + 제스처 바 24를 기준으로 계산했습니다. 기기와 OS 버전에 따라 몇 px 차이가 날 수 있어, 도구에서 실기기 측정값으로 덮어쓸 수 있게 해두었습니다.
서버가 X-Frame-Options 또는 CSP frame-ancestors로 다른 페이지에 삽입되는 것을 막고 있기 때문입니다. 네이버·구글·유튜브 등 대형 서비스가 여기에 해당합니다. Device Preview는 차단이 감지되면 서버 프록시로 자동 전환해 대부분의 경우 정상적으로 보여줍니다.
브라우저는 iframe 안의 User-Agent를 바꿀 수 없습니다. 다만 프록시로 열면 서버가 기기에 맞는 User-Agent(아이폰은 Safari, 갤럭시는 구글 앱)를 대신 보내므로 UA 기반 분기도 확인할 수 있습니다.
검색 결과에서 링크를 누르면 크롬 앱이 아니라 구글 앱 내부 브라우저가 열리는 경우가 많습니다. 툴바가 하나 더 붙어 세로 공간이 더 좁으므로, 검색 유입을 기준으로 보면 더 빡빡한 이쪽이 안전한 기준입니다.